Title: [249723] trunk/Source/WebKit
- Revision
- 249723
- Author
- cdu...@apple.com
- Date
- 2019-09-10 11:14:15 -0700 (Tue, 10 Sep 2019)
Log Message
Hangs on Swiss.com due to the web process being blocked on StorageAreaMap::LoadValuesIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=201644
<rdar://problem/54942761>
Reviewed by Geoffrey Garen.
Mark the StorageManagerSet::GetValues sync IPC from the WebContent process to the Network
process with a UnboundedSynchronousIPCScope so that it will process critical sync IPC
from the UIProcess (such as WebPage::GetPositionInformation) while waiting for a reply.
* WebProcess/WebStorage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::loadValuesIfNeeded):
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (249722 => 249723)
--- trunk/Source/WebKit/ChangeLog 2019-09-10 17:41:32 UTC (rev 249722)
+++ trunk/Source/WebKit/ChangeLog 2019-09-10 18:14:15 UTC (rev 249723)
@@ -1,3 +1,18 @@
+2019-09-10 Chris Dumez <cdu...@apple.com>
+
+ Hangs on Swiss.com due to the web process being blocked on StorageAreaMap::LoadValuesIfNeeded
+ https://bugs.webkit.org/show_bug.cgi?id=201644
+ <rdar://problem/54942761>
+
+ Reviewed by Geoffrey Garen.
+
+ Mark the StorageManagerSet::GetValues sync IPC from the WebContent process to the Network
+ process with a UnboundedSynchronousIPCScope so that it will process critical sync IPC
+ from the UIProcess (such as WebPage::GetPositionInformation) while waiting for a reply.
+
+ * WebProcess/WebStorage/StorageAreaMap.cpp:
+ (WebKit::StorageAreaMap::loadValuesIfNeeded):
+
2019-09-10 David Quesada <david_ques...@apple.com>
Remove a leftover reference to the StorageProcess
Modified: trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp (249722 => 249723)
--- trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp 2019-09-10 17:41:32 UTC (rev 249722)
+++ trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.cpp 2019-09-10 18:14:15 UTC (rev 249723)
@@ -160,10 +160,11 @@
if (m_storageMap)
return;
+ // The StorageManagerSet::GetValues() IPC may be very slow because it may need to fetch the values from disk and there may be a lot
+ // of data.
+ IPC::UnboundedSynchronousIPCScope unboundedSynchronousIPCScope;
+
HashMap<String, String> values;
- // FIXME: This should use a special sendSync flag to indicate that we don't want to process incoming messages while waiting for a reply.
- // (This flag does not yet exist). Since loadValuesIfNeeded() ends up being called from within _javascript_ code, processing incoming synchronous messages
- // could lead to weird reentrency bugs otherwise.
WebProcess::singleton().ensureNetworkProcessConnection().connection().sendSync(Messages::StorageManagerSet::GetValues(*m_storageMapID), Messages::StorageManagerSet::GetValues::Reply(values), 0);
m_storageMap = StorageMap::create(m_quotaInBytes);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes