Title: [206061] trunk/Source/WebCore
- Revision
- 206061
- Author
- [email protected]
- Date
- 2016-09-16 19:53:09 -0700 (Fri, 16 Sep 2016)
Log Message
ASSERTION FAILED: The string being removed is atomic in the string table of an other thread! iterator != atomicStringTable.end() at Source/WTF/wtf/text/AtomicStringImpl.cpp(453)
https://bugs.webkit.org/show_bug.cgi?id=161800
Reviewed by Žan Doberšek.
Speculative fix. These strings are created as static objects on a secondary thread, but all
static objects are destroyed in exit handlers on the main thread, and AtomicStrings must
always be destroyed on the same thread they are created.
* platform/graphics/texmap/TextureMapperShaderProgram.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (206060 => 206061)
--- trunk/Source/WebCore/ChangeLog 2016-09-17 02:39:43 UTC (rev 206060)
+++ trunk/Source/WebCore/ChangeLog 2016-09-17 02:53:09 UTC (rev 206061)
@@ -1,3 +1,16 @@
+2016-09-16 Michael Catanzaro <[email protected]>
+
+ ASSERTION FAILED: The string being removed is atomic in the string table of an other thread! iterator != atomicStringTable.end() at Source/WTF/wtf/text/AtomicStringImpl.cpp(453)
+ https://bugs.webkit.org/show_bug.cgi?id=161800
+
+ Reviewed by Žan Doberšek.
+
+ Speculative fix. These strings are created as static objects on a secondary thread, but all
+ static objects are destroyed in exit handlers on the main thread, and AtomicStrings must
+ always be destroyed on the same thread they are created.
+
+ * platform/graphics/texmap/TextureMapperShaderProgram.h:
+
2016-09-16 Commit Queue <[email protected]>
Unreviewed, rolling out r206055.
Modified: trunk/Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h (206060 => 206061)
--- trunk/Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h 2016-09-17 02:39:43 UTC (rev 206060)
+++ trunk/Source/WebCore/platform/graphics/texmap/TextureMapperShaderProgram.h 2016-09-17 02:53:09 UTC (rev 206061)
@@ -26,12 +26,18 @@
#include "GraphicsContext3D.h"
#include "TransformationMatrix.h"
#include <wtf/HashMap.h>
+#include <wtf/NeverDestroyed.h>
#include <wtf/Ref.h>
#include <wtf/text/AtomicStringHash.h>
namespace WebCore {
-#define TEXMAP_DECLARE_VARIABLE(Accessor, Name, Type) GC3Duint Accessor##Location() { static const AtomicString name(Name); return getLocation(name, Type); }
+#define TEXMAP_DECLARE_VARIABLE(Accessor, Name, Type) \
+ GC3Duint Accessor##Location() { \
+ static NeverDestroyed<const AtomicString> name(Name, AtomicString::ConstructFromLiteral); \
+ return getLocation(name.get(), Type); \
+ }
+
#define TEXMAP_DECLARE_UNIFORM(Accessor) TEXMAP_DECLARE_VARIABLE(Accessor, "u_"#Accessor, UniformVariable)
#define TEXMAP_DECLARE_ATTRIBUTE(Accessor) TEXMAP_DECLARE_VARIABLE(Accessor, "a_"#Accessor, AttribVariable)
#define TEXMAP_DECLARE_SAMPLER(Accessor) TEXMAP_DECLARE_VARIABLE(Accessor, "s_"#Accessor, UniformVariable)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes