[webkit-changes] [WebKit/WebKit] 0b882f: Regression(270212 at main) XPCConnectionTerminationWa...

Chris Dumez noreply at github.com
Tue Feb 6 19:06:58 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0b882fd2de7fc6f68d5664e81a5ae0bbd85b71fb
      https://github.com/WebKit/WebKit/commit/0b882fd2de7fc6f68d5664e81a5ae0bbd85b71fb
  Author: Chris Dumez <cdumez at 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 at 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 at 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




More information about the webkit-changes mailing list