Changeset 243792 in webkit
- Timestamp:
- Apr 2, 2019, 11:23:51 PM (7 years ago)
- Location:
- tags/Safari-608.1.13.5
- Files:
-
- 9 edited
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (modified) (1 diff)
-
Source/WebKit/UIProcess/WebProcessPool.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/WebProcessPool.h (modified) (1 diff)
-
Source/WebKit/UIProcess/WebProcessProxy.cpp (modified) (4 diffs)
-
Source/WebKit/UIProcess/WebProcessProxy.h (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
tags/Safari-608.1.13.5/Source/WebKit/ChangeLog
r243791 r243792 1 2019-04-02 Babak Shafiei <bshafiei@apple.com> 2 3 Cherry-pick r243711. rdar://problem/49245471 4 5 UIProcess crash when a prewarmed process is terminated 6 https://bugs.webkit.org/show_bug.cgi?id=196451 7 <rdar://problem/49245471> 8 9 Reviewed by Geoffrey Garen. 10 11 Source/WebKit: 12 13 Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer 14 true after r243384. For example, prewarmed WebContent processe do not get a data store 15 until they actually get used. 16 17 * UIProcess/API/Cocoa/WKProcessPool.mm: 18 (-[WKProcessPool _prewarmedProcessIdentifier]): 19 * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: 20 * UIProcess/WebProcessPool.cpp: 21 (WebKit::WebProcessPool::networkProcessIdentifier): 22 (WebKit::WebProcessPool::prewarmedProcessIdentifier): 23 * UIProcess/WebProcessPool.h: 24 * UIProcess/WebProcessProxy.cpp: 25 (WebKit::WebProcessProxy::didClose): 26 (WebKit::WebProcessProxy::didFinishLaunching): 27 (WebKit::WebProcessProxy::requestTermination): 28 (WebKit::WebProcessProxy::isReleaseLoggingAllowed const): 29 * UIProcess/WebProcessProxy.h: 30 31 Tools: 32 33 Add API test coverage. 34 35 * TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm: 36 (TEST): 37 38 39 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243711 268f45cc-cd09-0410-ab3c-d52691b4dbfc 40 41 2019-04-01 Chris Dumez <cdumez@apple.com> 42 43 UIProcess crash when a prewarmed process is terminated 44 https://bugs.webkit.org/show_bug.cgi?id=196451 45 <rdar://problem/49245471> 46 47 Reviewed by Geoffrey Garen. 48 49 Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer 50 true after r243384. For example, prewarmed WebContent processe do not get a data store 51 until they actually get used. 52 53 * UIProcess/API/Cocoa/WKProcessPool.mm: 54 (-[WKProcessPool _prewarmedProcessIdentifier]): 55 * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: 56 * UIProcess/WebProcessPool.cpp: 57 (WebKit::WebProcessPool::networkProcessIdentifier): 58 (WebKit::WebProcessPool::prewarmedProcessIdentifier): 59 * UIProcess/WebProcessPool.h: 60 * UIProcess/WebProcessProxy.cpp: 61 (WebKit::WebProcessProxy::didClose): 62 (WebKit::WebProcessProxy::didFinishLaunching): 63 (WebKit::WebProcessProxy::requestTermination): 64 (WebKit::WebProcessProxy::isReleaseLoggingAllowed const): 65 * UIProcess/WebProcessProxy.h: 66 1 67 2019-04-02 Babak Shafiei <bshafiei@apple.com> 2 68 -
tags/Safari-608.1.13.5/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
r243384 r243792 441 441 } 442 442 443 - (pid_t)_prewarmedProcessIdentifier 444 { 445 return _processPool->prewarmedProcessIdentifier(); 446 } 447 448 443 449 - (void)_syncNetworkProcessCookies 444 450 { -
tags/Safari-608.1.13.5/Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h
r243376 r243792 90 90 // Test only. 91 91 - (pid_t)_networkProcessIdentifier WK_API_AVAILABLE(macos(10.13), ios(11.0)); 92 - (pid_t)_prewarmedProcessIdentifier WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 92 93 93 94 // Test only. -
tags/Safari-608.1.13.5/Source/WebKit/UIProcess/WebProcessPool.cpp
r243384 r243792 1441 1441 ProcessID WebProcessPool::networkProcessIdentifier() 1442 1442 { 1443 if (!m_networkProcess) 1444 return 0; 1445 1446 return m_networkProcess->processIdentifier(); 1443 return m_networkProcess ? m_networkProcess->processIdentifier() : 0; 1444 } 1445 1446 ProcessID WebProcessPool::prewarmedProcessIdentifier() 1447 { 1448 return m_prewarmedProcess ? m_prewarmedProcess->processIdentifier() : 0; 1447 1449 } 1448 1450 -
tags/Safari-608.1.13.5/Source/WebKit/UIProcess/WebProcessPool.h
r243384 r243792 233 233 234 234 ProcessID networkProcessIdentifier(); 235 ProcessID prewarmedProcessIdentifier(); 235 236 void activePagesOriginsInWebProcessForTesting(ProcessID, CompletionHandler<void(Vector<String>&&)>&&); 236 237 bool networkProcessHasEntitlementForTesting(const String&); -
tags/Safari-608.1.13.5/Source/WebKit/UIProcess/WebProcessProxy.cpp
r243384 r243792 666 666 void WebProcessProxy::didClose(IPC::Connection&) 667 667 { 668 RELEASE_LOG_IF( m_websiteDataStore->sessionID().isAlwaysOnLoggingAllowed(), Process, "%p - WebProcessProxy didClose (web process crash)", this);668 RELEASE_LOG_IF(isReleaseLoggingAllowed(), Process, "%p - WebProcessProxy didClose (web process crash)", this); 669 669 processDidTerminateOrFailedToLaunch(); 670 670 } … … 775 775 776 776 if (!IPC::Connection::identifierIsValid(connectionIdentifier)) { 777 RELEASE_LOG_IF( m_websiteDataStore->sessionID().isAlwaysOnLoggingAllowed(), Process, "%p - WebProcessProxy didFinishLaunching - invalid connection identifier (web process failed to launch)", this);777 RELEASE_LOG_IF(isReleaseLoggingAllowed(), Process, "%p - WebProcessProxy didFinishLaunching - invalid connection identifier (web process failed to launch)", this); 778 778 processDidTerminateOrFailedToLaunch(); 779 779 return; … … 1004 1004 1005 1005 auto protectedThis = makeRef(*this); 1006 RELEASE_LOG_IF( m_websiteDataStore->sessionID().isAlwaysOnLoggingAllowed(), Process, "%p - WebProcessProxy::requestTermination - reason %d", this, reason);1006 RELEASE_LOG_IF(isReleaseLoggingAllowed(), Process, "%p - WebProcessProxy::requestTermination - reason %d", this, reason); 1007 1007 1008 1008 AuxiliaryProcessProxy::terminate(); … … 1017 1017 for (auto& page : pages) 1018 1018 page->processDidTerminate(reason); 1019 } 1020 1021 bool WebProcessProxy::isReleaseLoggingAllowed() const 1022 { 1023 return !m_websiteDataStore || m_websiteDataStore->sessionID().isAlwaysOnLoggingAllowed(); 1019 1024 } 1020 1025 -
tags/Safari-608.1.13.5/Source/WebKit/UIProcess/WebProcessProxy.h
r243384 r243792 402 402 void processDidTerminateOrFailedToLaunch(); 403 403 404 bool isReleaseLoggingAllowed() const; 405 404 406 // IPC::Connection::Client 405 407 friend class WebConnectionToWebProcess; -
tags/Safari-608.1.13.5/Tools/ChangeLog
r243385 r243792 1 2019-04-02 Babak Shafiei <bshafiei@apple.com> 2 3 Cherry-pick r243711. rdar://problem/49245471 4 5 UIProcess crash when a prewarmed process is terminated 6 https://bugs.webkit.org/show_bug.cgi?id=196451 7 <rdar://problem/49245471> 8 9 Reviewed by Geoffrey Garen. 10 11 Source/WebKit: 12 13 Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer 14 true after r243384. For example, prewarmed WebContent processe do not get a data store 15 until they actually get used. 16 17 * UIProcess/API/Cocoa/WKProcessPool.mm: 18 (-[WKProcessPool _prewarmedProcessIdentifier]): 19 * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: 20 * UIProcess/WebProcessPool.cpp: 21 (WebKit::WebProcessPool::networkProcessIdentifier): 22 (WebKit::WebProcessPool::prewarmedProcessIdentifier): 23 * UIProcess/WebProcessPool.h: 24 * UIProcess/WebProcessProxy.cpp: 25 (WebKit::WebProcessProxy::didClose): 26 (WebKit::WebProcessProxy::didFinishLaunching): 27 (WebKit::WebProcessProxy::requestTermination): 28 (WebKit::WebProcessProxy::isReleaseLoggingAllowed const): 29 * UIProcess/WebProcessProxy.h: 30 31 Tools: 32 33 Add API test coverage. 34 35 * TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm: 36 (TEST): 37 38 39 git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243711 268f45cc-cd09-0410-ab3c-d52691b4dbfc 40 41 2019-04-01 Chris Dumez <cdumez@apple.com> 42 43 UIProcess crash when a prewarmed process is terminated 44 https://bugs.webkit.org/show_bug.cgi?id=196451 45 <rdar://problem/49245471> 46 47 Reviewed by Geoffrey Garen. 48 49 Add API test coverage. 50 51 * TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm: 52 (TEST): 53 1 54 2019-03-22 Chris Dumez <cdumez@apple.com> 2 55 -
tags/Safari-608.1.13.5/Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm
r243384 r243792 121 121 EXPECT_EQ(2U, [pool _webPageContentProcessCount]); 122 122 } 123 124 TEST(WKProcessPool, PrewarmedProcessCrash) 125 { 126 auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]); 127 processPoolConfiguration.get().prewarmsProcessesAutomatically = NO; 128 129 auto pool = adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration.get()]); 130 [pool _warmInitialProcess]; 131 132 EXPECT_TRUE([pool _hasPrewarmedWebProcess]); 133 EXPECT_EQ(1U, [pool _webPageContentProcessCount]); 134 135 // Wait for prewarmed process to finish launching. 136 while (![pool _prewarmedProcessIdentifier]) 137 TestWebKitAPI::Util::sleep(0.01); 138 139 kill([pool _prewarmedProcessIdentifier], 9); 140 141 while ([pool _hasPrewarmedWebProcess]) 142 TestWebKitAPI::Util::sleep(0.01); 143 }
Note:
See TracChangeset
for help on using the changeset viewer.