Title: [118365] trunk/Source/WebCore
Revision
118365
Author
[email protected]
Date
2012-05-24 07:20:05 -0700 (Thu, 24 May 2012)

Log Message

[BlackBerry] Possible deadlock in the WebGL code path
https://bugs.webkit.org/show_bug.cgi?id=87375

Patch by Robin Cao <[email protected]> on 2012-05-24
Reviewed by Rob Buis.

Fix a deadlock happening in the WebGL code path. The mutex is locked
but is not unlocked afterword. Also fix a possible double delete,
the mutex m_frontBufferLock will be destroyed in the base class.

Covered by tests in fast/canvas/webgl.

* platform/graphics/blackberry/LayerCompositingThread.cpp:
(WebCore::LayerCompositingThread::releaseTextureResources):
* platform/graphics/blackberry/WebGLLayerWebKitThread.cpp:
(WebCore::WebGLLayerWebKitThread::~WebGLLayerWebKitThread):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (118364 => 118365)


--- trunk/Source/WebCore/ChangeLog	2012-05-24 14:13:48 UTC (rev 118364)
+++ trunk/Source/WebCore/ChangeLog	2012-05-24 14:20:05 UTC (rev 118365)
@@ -1,3 +1,21 @@
+2012-05-24  Robin Cao  <[email protected]>
+
+        [BlackBerry] Possible deadlock in the WebGL code path
+        https://bugs.webkit.org/show_bug.cgi?id=87375
+
+        Reviewed by Rob Buis.
+
+        Fix a deadlock happening in the WebGL code path. The mutex is locked
+        but is not unlocked afterword. Also fix a possible double delete,
+        the mutex m_frontBufferLock will be destroyed in the base class.
+
+        Covered by tests in fast/canvas/webgl.
+
+        * platform/graphics/blackberry/LayerCompositingThread.cpp:
+        (WebCore::LayerCompositingThread::releaseTextureResources):
+        * platform/graphics/blackberry/WebGLLayerWebKitThread.cpp:
+        (WebCore::WebGLLayerWebKitThread::~WebGLLayerWebKitThread):
+
 2012-05-24  Ian Vollick  <[email protected]>
 
         [chromium] Forcibly sync running animations in the waiting state when synchronized start times are needed.

Modified: trunk/Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp (118364 => 118365)


--- trunk/Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp	2012-05-24 14:13:48 UTC (rev 118364)
+++ trunk/Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp	2012-05-24 14:20:05 UTC (rev 118365)
@@ -305,7 +305,7 @@
         m_pluginBuffer = 0;
         m_pluginView->unlockFrontBuffer();
     }
-    if (m_texID && m_frontBufferLock)
+    if (m_frontBufferLock && (m_texID || layerType() == LayerData::WebGLLayer))
         pthread_mutex_unlock(m_frontBufferLock);
 }
 

Modified: trunk/Source/WebCore/platform/graphics/blackberry/WebGLLayerWebKitThread.cpp (118364 => 118365)


--- trunk/Source/WebCore/platform/graphics/blackberry/WebGLLayerWebKitThread.cpp	2012-05-24 14:13:48 UTC (rev 118364)
+++ trunk/Source/WebCore/platform/graphics/blackberry/WebGLLayerWebKitThread.cpp	2012-05-24 14:20:05 UTC (rev 118365)
@@ -36,8 +36,6 @@
 
 WebGLLayerWebKitThread::~WebGLLayerWebKitThread()
 {
-    if (m_frontBufferLock)
-        pthread_mutex_destroy(m_frontBufferLock);
 }
 
 void WebGLLayerWebKitThread::setNeedsDisplay()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to