Changeset 244217 in webkit
- Timestamp:
- Apr 12, 2019 9:11:46 AM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r244212 r244217 1 2019-04-12 Chris Dumez <cdumez@apple.com> 2 3 [iOS Sim Debug] ASSERTION FAILED: m_downloads.isEmpty() Layout Test http/tests/websocket/tests/hybi/network-process-crash-error.html is a flaky crash 4 https://bugs.webkit.org/show_bug.cgi?id=196781 5 <rdar://problem/49789381> 6 7 Reviewed by Darin Adler. 8 9 When the network process gets terminated by the client, the NetworkProcessProxy object (and thus its DownloadProxyMap member) get 10 destroyed right away, before we get a call to didClose(IPC::Connection&). As a result, if there are ongoing downloads at the time 11 of the termination, we will hit the assertion above. To address the issue, update the NetworkProcessProxy destructor to invalidate 12 its DownloadProxyMap member, similator to what it does in didClose(IPC::Connection&). 13 14 * UIProcess/Downloads/DownloadProxyMap.cpp: 15 (WebKit::DownloadProxyMap::invalidate): 16 (WebKit::DownloadProxyMap::processDidClose): Deleted. 17 * UIProcess/Downloads/DownloadProxyMap.h: 18 * UIProcess/Network/NetworkProcessProxy.cpp: 19 (WebKit::NetworkProcessProxy::~NetworkProcessProxy): 20 (WebKit::NetworkProcessProxy::didClose): 21 1 22 2019-04-11 Carlos Garcia Campos <cgarcia@igalia.com> 2 23 -
trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.cpp
r243110 r244217 111 111 } 112 112 113 void DownloadProxyMap:: processDidClose()113 void DownloadProxyMap::invalidate() 114 114 { 115 115 // Invalidate all outstanding downloads. -
trunk/Source/WebKit/UIProcess/Downloads/DownloadProxyMap.h
r243110 r244217 60 60 bool isEmpty() const { return m_downloads.isEmpty(); } 61 61 62 void processDidClose();62 void invalidate(); 63 63 64 64 void applicationDidEnterBackground(); -
trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
r244077 r244217 98 98 #endif 99 99 100 if (m_downloadProxyMap) 101 m_downloadProxyMap->invalidate(); 102 100 103 for (auto& reply : m_pendingConnectionReplies) 101 104 reply.second({ }); … … 274 277 275 278 if (m_downloadProxyMap) 276 m_downloadProxyMap-> processDidClose();279 m_downloadProxyMap->invalidate(); 277 280 #if ENABLE(LEGACY_CUSTOM_PROTOCOL_MANAGER) 278 281 m_customProtocolManagerProxy.invalidate();
Note: See TracChangeset
for help on using the changeset viewer.