Title: [232157] trunk/Source/WebKit
Revision
232157
Author
[email protected]
Date
2018-05-24 12:13:28 -0700 (Thu, 24 May 2018)

Log Message

Crash under WebKit::PluginProxy::destroy()
https://bugs.webkit.org/show_bug.cgi?id=185841
<rdar://problem/39936896>

Reviewed by Brent Fulgham.

A release assert in Connection::sencSync is failing since scripts are not allowed in this context,
and the WebKit process is allowed to process incoming messages while waiting for the sync reply.
In this context, scripts are disallowed in the method Element::addShadowRoot. To make sure the
WebContent process will not wait indefinitely for a reply from the Plugin process, use a timeout
of 1 second when sending the message.

* WebProcess/Plugins/PluginProxy.cpp:
(WebKit::PluginProxy::destroy):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (232156 => 232157)


--- trunk/Source/WebKit/ChangeLog	2018-05-24 18:10:05 UTC (rev 232156)
+++ trunk/Source/WebKit/ChangeLog	2018-05-24 19:13:28 UTC (rev 232157)
@@ -1,3 +1,20 @@
+2018-05-24  Per Arne Vollan  <[email protected]>
+
+        Crash under WebKit::PluginProxy::destroy()
+        https://bugs.webkit.org/show_bug.cgi?id=185841
+        <rdar://problem/39936896>
+
+        Reviewed by Brent Fulgham.
+
+        A release assert in Connection::sencSync is failing since scripts are not allowed in this context,
+        and the WebKit process is allowed to process incoming messages while waiting for the sync reply.
+        In this context, scripts are disallowed in the method Element::addShadowRoot. To make sure the
+        WebContent process will not wait indefinitely for a reply from the Plugin process, use a timeout
+        of 1 second when sending the message.
+
+        * WebProcess/Plugins/PluginProxy.cpp:
+        (WebKit::PluginProxy::destroy):
+
 2018-05-24  Carlos Garcia Campos  <[email protected]>
 
         Unreviewed. Fix GTK+ input method unit tests after r232049.

Modified: trunk/Source/WebKit/WebProcess/Plugins/PluginProxy.cpp (232156 => 232157)


--- trunk/Source/WebKit/WebProcess/Plugins/PluginProxy.cpp	2018-05-24 18:10:05 UTC (rev 232156)
+++ trunk/Source/WebKit/WebProcess/Plugins/PluginProxy.cpp	2018-05-24 19:13:28 UTC (rev 232157)
@@ -196,7 +196,9 @@
     if (!m_connection)
         return;
 
-    m_connection->connection()->sendSync(Messages::WebProcessConnection::DestroyPlugin(m_pluginInstanceID, m_waitingOnAsynchronousInitialization), Messages::WebProcessConnection::DestroyPlugin::Reply(), 0);
+    // Although this message is sent synchronously, the Plugin process replies immediately (before performing any tasks) so this is only waiting for
+    // confirmation that the Plugin process received the DestroyPlugin message.
+    m_connection->connection()->sendSync(Messages::WebProcessConnection::DestroyPlugin(m_pluginInstanceID, m_waitingOnAsynchronousInitialization), Messages::WebProcessConnection::DestroyPlugin::Reply(), 0, 1_s, IPC::SendSyncOption::DoNotProcessIncomingMessagesWhenWaitingForSyncReply);
     m_connection->removePluginProxy(this);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to