Changeset 243528 in webkit
- Timestamp:
- Mar 26, 2019, 4:54:11 PM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
Shared/AuxiliaryProcess.cpp (modified) (1 diff)
-
Shared/Cocoa/AuxiliaryProcessCocoa.mm (modified) (2 diffs)
-
Shared/ios/AuxiliaryProcessIOS.mm (modified) (1 diff)
-
Shared/mac/AuxiliaryProcessMac.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r243524 r243528 1 2019-03-26 Chris Dumez <cdumez@apple.com> 2 3 [macOS] The network process is not exiting reliably when the WebProcessPool is destroyed 4 https://bugs.webkit.org/show_bug.cgi?id=196277 5 <rdar://problem/49127581> 6 7 Reviewed by Alex Christensen. 8 9 When, an AuxiliaryProcess receives the AuxiliaryProcess::Terminate IPC, it calls stopRunLoop() 10 to exit. WebProcess overrides AuxiliaryProcess::stopRunLoop() to call exit(0) on the main 11 thread. Other auxiliary processes such as the NetworkProcess would end up calling 12 platformStopRunLoop(). On iOS and iOSMac, platformStopRunLoop() calls XPCServiceExit(), which 13 makes sense since auxiliary processes run their run loop by calling xpc_main(). However, on 14 macOS, platformStopRunLoop() was calling RunLoop::main().stop() to exit instead, which was 15 unreliable as demonstrated by the test app attached to the radar. 16 17 Updating platformStopRunLoop() to call XPCServiceExit() on macOS fixes the problem and I now 18 see the NetworkProcess exiting reliably there. This is the approach I have chosen in this 19 patch since it appears to be reliable and it makes the code consistent on all Cocoa platforms. 20 21 * Shared/AuxiliaryProcess.cpp: 22 * Shared/Cocoa/AuxiliaryProcessCocoa.mm: 23 (WebKit::AuxiliaryProcess::platformStopRunLoop): 24 * Shared/ios/AuxiliaryProcessIOS.mm: 25 (WebKit::AuxiliaryProcess::platformStopRunLoop): Deleted. 26 * Shared/mac/AuxiliaryProcessMac.mm: 27 (WebKit::AuxiliaryProcess::platformStopRunLoop): Deleted. 28 1 29 2019-03-26 Keith Rollin <krollin@apple.com> 2 30 -
trunk/Source/WebKit/Shared/AuxiliaryProcess.cpp
r241169 r243528 175 175 } 176 176 177 #if !PLATFORM( IOS_FAMILY)177 #if !PLATFORM(COCOA) 178 178 void AuxiliaryProcess::platformStopRunLoop() 179 179 { -
trunk/Source/WebKit/Shared/Cocoa/AuxiliaryProcessCocoa.mm
r243324 r243528 28 28 29 29 #import "WKCrashReporter.h" 30 #import "XPCServiceEntryPoint.h" 30 31 #import <wtf/cocoa/Entitlements.h> 31 32 … … 43 44 } 44 45 46 void AuxiliaryProcess::platformStopRunLoop() 47 { 48 XPCServiceExit(WTFMove(m_priorityBoostMessage)); 45 49 } 50 51 } -
trunk/Source/WebKit/Shared/ios/AuxiliaryProcessIOS.mm
r240683 r243528 114 114 } 115 115 116 void AuxiliaryProcess::platformStopRunLoop()117 {118 XPCServiceExit(WTFMove(m_priorityBoostMessage));119 }120 121 116 } // namespace WebKit 122 117 -
trunk/Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm
r243253 r243528 696 696 #endif 697 697 698 #if PLATFORM(IOSMAC)699 void AuxiliaryProcess::platformStopRunLoop()700 {701 XPCServiceExit(WTFMove(m_priorityBoostMessage));702 }703 #endif704 705 698 void AuxiliaryProcess::setQOS(int latencyQOS, int throughputQOS) 706 699 {
Note:
See TracChangeset
for help on using the changeset viewer.