Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 0b882fd2de7fc6f68d5664e81a5ae0bbd85b71fb https://github.com/WebKit/WebKit/commit/0b882fd2de7fc6f68d5664e81a5ae0bbd85b71fb Author: Chris Dumez <cdu...@apple.com> Date: 2024-02-06 (Tue, 06 Feb 2024)
Changed paths: M Source/WebKit/UIProcess/Cocoa/XPCConnectionTerminationWatchdog.h M Source/WebKit/UIProcess/Cocoa/XPCConnectionTerminationWatchdog.mm Log Message: ----------- Regression(270212@main) XPCConnectionTerminationWatchdog is broken https://bugs.webkit.org/show_bug.cgi?id=268860 rdar://122343478 Reviewed by Per Arne Vollan. XPCConnectionTerminationWatchdog is broken since 270212@main. As a result, child processes are no longer getting terminated when they fail to exit promptly. This means we end up with "zombie" processes that are suspended in the middle of exit. Worse, when the child process is a GPUProcess, the connection with existed WebProcesses doesn't get severed so the WebProcesses will keep trying to IPC the "old" suspended GPUProcess and will hang on sync IPC. The issue was that the XPCConnectionTerminationWatchdog was updated to keep a WeakPtr to the AuxiliaryProcessProxy instead of a strong pointer to the XPC connection. After the timeout, it would try and get the XPC connection from the WeakPtr<AuxiliaryProcessProxy>, which would be null, since nothing guarantees the proxy object stays alive after we've asked it to shut down. Go back to storing a strong pointer to the XPC connection. * Source/WebKit/UIProcess/Cocoa/XPCConnectionTerminationWatchdog.h: * Source/WebKit/UIProcess/Cocoa/XPCConnectionTerminationWatchdog.mm: (WebKit::XPCConnectionTerminationWatchdog::XPCConnectionTerminationWatchdog): (WebKit::XPCConnectionTerminationWatchdog::watchdogTimerFired): Canonical link: https://commits.webkit.org/274189@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes