Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b38ea6134dce43891785b3ab673259ae3a70f526
https://github.com/WebKit/WebKit/commit/b38ea6134dce43891785b3ab673259ae3a70f526
Author: Kimmo Kinnunen <[email protected]>
Date: 2026-10-13 (Tue, 13 Oct 2026)
Changed paths:
M Source/WebKit/Platform/IPC/darwin/IPCEventDarwin.cpp
M Tools/TestWebKitAPI/Tests/IPC/IPCEventTests.cpp
Log Message:
-----------
IPC::Signal::signal() logs an error when the Event has been destroyed
https://bugs.webkit.org/show_bug.cgi?id=323998
rdar://problem/187817051
Reviewed by Matt Woodrow.
Based on a patch by Lingxiao Yu.
Signalling an Event that has already been destroyed is business as usual.
For example ~RemoteImageBufferProxy() sends FlushContext and then destroys
the flush Event, and a replaced pending flush Event may be destroyed before
the GPU process signals it. The Signal then holds a dead name and mach_msg()
fails with MACH_SEND_INVALID_DEST. Signal::signal() logged this with
RELEASE_LOG_ERROR, once per destroyed image buffer, which showed up as
sustained error log traffic from the GPU process.
Ignore MACH_SEND_INVALID_DEST silently, the same way as MACH_SEND_TIMED_OUT.
Each Signal hits the dead port at most once before it is replaced or
destroyed, so there is no need to remember the failure in the Signal.
Currently does not add an early out for signaling already INVALID_DEST
receiver. The signal is only ever done:
- Once per IPC fence
- Once per waiting client signal in StreamServerConnection. After each
signal, the client is tagged as not waiting, and thus dead clients
do not cause more signals.
Test: Tools/TestWebKitAPI/Tests/IPC/IPCEventTests.cpp
* Source/WebKit/Platform/IPC/darwin/IPCEventDarwin.cpp:
(IPC::Signal::signal):
* Tools/TestWebKitAPI/Tests/IPC/IPCEventTests.cpp:
(TestWebKitAPI::TEST(IPCEventTests, SignalAfterEventIsDestroyedDoesNotBlock)):
Canonical link: https://commits.webkit.org/323691@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications