Title: [236492] trunk/Source/WebKit
Revision
236492
Author
[email protected]
Date
2018-09-25 18:27:54 -0700 (Tue, 25 Sep 2018)

Log Message

Unreviewed, rolling out r236471 and r236480.

Seems to be causing some flaky crashes

Reverted changesets:

"UIProcess should process incoming sync IPC from WebProcess
when waiting for a sync IPC reply from it"
https://bugs.webkit.org/show_bug.cgi?id=189927
https://trac.webkit.org/changeset/236471

"Revert some of the changes in r236471"
https://bugs.webkit.org/show_bug.cgi?id=189973
https://trac.webkit.org/changeset/236480

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (236491 => 236492)


--- trunk/Source/WebKit/ChangeLog	2018-09-26 01:18:53 UTC (rev 236491)
+++ trunk/Source/WebKit/ChangeLog	2018-09-26 01:27:54 UTC (rev 236492)
@@ -1,3 +1,20 @@
+2018-09-25  Chris Dumez  <[email protected]>
+
+        Unreviewed, rolling out r236471 and r236480.
+
+        Seems to be causing some flaky crashes
+
+        Reverted changesets:
+
+        "UIProcess should process incoming sync IPC from WebProcess
+        when waiting for a sync IPC reply from it"
+        https://bugs.webkit.org/show_bug.cgi?id=189927
+        https://trac.webkit.org/changeset/236471
+
+        "Revert some of the changes in r236471"
+        https://bugs.webkit.org/show_bug.cgi?id=189973
+        https://trac.webkit.org/changeset/236480
+
 2018-09-25  Conrad Shultz  <[email protected]>
 
         Enable customization of the file upload panel

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (236491 => 236492)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2018-09-26 01:18:53 UTC (rev 236491)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp	2018-09-26 01:27:54 UTC (rev 236492)
@@ -4013,7 +4013,7 @@
     if (!fromAPI)
         m_pageLoadState.clearPendingAPIRequestURL(transaction);
 
-    auto* frame = m_process->webFrame(frameID);
+    WebFrameProxy* frame = m_process->webFrame(frameID);
     MESSAGE_CHECK(frame);
     MESSAGE_CHECK_URL(request.url());
     MESSAGE_CHECK_URL(originalRequest.url());

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp (236491 => 236492)


--- trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp	2018-09-26 01:18:53 UTC (rev 236491)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebFrame.cpp	2018-09-26 01:27:54 UTC (rev 236492)
@@ -111,8 +111,6 @@
 Ref<WebFrame> WebFrame::createWithCoreMainFrame(WebPage* page, WebCore::Frame* coreFrame)
 {
     auto frame = create(std::unique_ptr<WebFrameLoaderClient>(static_cast<WebFrameLoaderClient*>(&coreFrame->loader().client())));
-    // DispatchMessageEvenWhenWaitingForSyncReply SendOption is needed to ensure that this IPC always gets received before the DecidePolicyForNavigationSync synchronous
-    // IPC for this frame.
     page->send(Messages::WebPageProxy::DidCreateMainFrame(frame->frameID()), page->pageID(), IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
 
     frame->m_coreFrame = coreFrame;
@@ -124,8 +122,6 @@
 Ref<WebFrame> WebFrame::createSubframe(WebPage* page, const String& frameName, HTMLFrameOwnerElement* ownerElement)
 {
     auto frame = create(std::make_unique<WebFrameLoaderClient>());
-    // DispatchMessageEvenWhenWaitingForSyncReply SendOption is needed to ensure that this IPC always gets received before the DecidePolicyForNavigationSync synchronous
-    // IPC for this frame.
     page->send(Messages::WebPageProxy::DidCreateSubframe(frame->frameID()), page->pageID(), IPC::SendOption::DispatchMessageEvenWhenWaitingForSyncReply);
 
     auto coreFrame = Frame::create(page->corePage(), ownerElement, frame->m_frameLoaderClient.get());

Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (236491 => 236492)


--- trunk/Source/WebKit/WebProcess/WebProcess.cpp	2018-09-26 01:18:53 UTC (rev 236491)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp	2018-09-26 01:27:54 UTC (rev 236492)
@@ -251,6 +251,12 @@
         supplement->initializeConnection(connection);
 
     m_webConnection = WebConnectionToUIProcess::create(this);
+
+    // In order to ensure that the asynchronous messages that are used for notifying the UI process
+    // about when WebFrame objects come and go are always delivered before the synchronous policy messages,
+    // use this flag to force synchronous messages to be treated as asynchronous messages in the UI process
+    // unless when doing so would lead to a deadlock.
+    connection->setOnlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage(true);
 }
 
 void WebProcess::initializeWebProcess(WebProcessCreationParameters&& parameters)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to