Title: [206061] trunk/Source/WebCore
Revision
206061
Author
mcatanz...@igalia.com
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  <mcatanz...@igalia.com>
+
+        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  <commit-qu...@webkit.org>
 
         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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to