Title: [201202] trunk/Source/WebKit2
Revision
201202
Author
[email protected]
Date
2016-05-19 17:20:36 -0700 (Thu, 19 May 2016)

Log Message

Mail crashes under TiledCoreAnimationDrawingAreaProxy::createFenceForGeometryUpdate() when the Web process crashes
https://bugs.webkit.org/show_bug.cgi?id=157927
<rdar://problem/24793374>

Reviewed by Dean Jackson.

* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
With just the right combination of layout mechanisms and Web Content process
crash timing, it is possible to get a frame change underneath WebPageProxy::processDidCrash,
before the DrawingArea has been nulled out but after the Connection has.
This can lead to a null dereference. I had a lot of trouble writing a API
test for this, though I'm certain it's possible.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (201201 => 201202)


--- trunk/Source/WebKit2/ChangeLog	2016-05-19 23:54:32 UTC (rev 201201)
+++ trunk/Source/WebKit2/ChangeLog	2016-05-20 00:20:36 UTC (rev 201202)
@@ -1,3 +1,19 @@
+2016-05-19  Tim Horton  <[email protected]>
+
+        Mail crashes under TiledCoreAnimationDrawingAreaProxy::createFenceForGeometryUpdate() when the Web process crashes
+        https://bugs.webkit.org/show_bug.cgi?id=157927
+        <rdar://problem/24793374>
+
+        Reviewed by Dean Jackson.
+
+        * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
+        (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence):
+        With just the right combination of layout mechanisms and Web Content process
+        crash timing, it is possible to get a frame change underneath WebPageProxy::processDidCrash,
+        before the DrawingArea has been nulled out but after the Connection has.
+        This can lead to a null dereference. I had a lot of trouble writing a API
+        test for this, though I'm certain it's possible.
+
 2016-05-16  Enrica Casucci  <[email protected]>
 
         No candidate punctuation when typing punctuation in WK2 text field.

Modified: trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm (201201 => 201202)


--- trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm	2016-05-19 23:54:32 UTC (rev 201201)
+++ trunk/Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm	2016-05-20 00:20:36 UTC (rev 201202)
@@ -160,6 +160,13 @@
     if (!rootLayerContext)
         return MachSendRight();
 
+    // Don't fence if we don't have a connection, because the message
+    // will likely get dropped on the floor (if the Web process is terminated)
+    // or queued up until process launch completes, and there's nothing useful
+    // to synchronize in these cases.
+    if (!m_webPageProxy.process().connection())
+        return MachSendRight();
+
     // Don't fence if we have incoming synchronous messages, because we may not
     // be able to reply to the message until the fence times out.
     if (m_webPageProxy.process().connection()->hasIncomingSyncMessage())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to