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

Reply via email to