Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: da21559d05d5532252c21c93a62a2631f3192351
https://github.com/WebKit/WebKit/commit/da21559d05d5532252c21c93a62a2631f3192351
Author: David Kilzer <[email protected]>
Date: 2026-08-07 (Fri, 07 Aug 2026)
Changed paths:
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/GPUProcess.h
M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.cpp
M Source/WebKit/ModelProcess/ModelConnectionToWebProcess.cpp
M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
M Source/WebKit/Platform/IPC/Connection.h
M Source/WebKit/Platform/IPC/cocoa/ConnectionCocoa.mm
M Source/WebKit/Platform/cocoa/XPCUtilities.h
M Source/WebKit/Platform/cocoa/XPCUtilities.mm
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/parser_unittest.py
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
M Source/WebKit/Scripts/webkit/tests/MessageNames.cpp
M Source/WebKit/Scripts/webkit/tests/MessageNames.h
M Source/WebKit/Scripts/webkit/tests/TestWithSuperclass.messages.in
M Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp
M Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessages.h
M Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp
M Source/WebKit/UIProcess/AuxiliaryProcessProxy.h
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
M Source/WebKit/UIProcess/GPU/GPUProcessProxy.messages.in
M Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp
M Source/WebKit/UIProcess/Model/ModelProcessProxy.h
M Source/WebKit/UIProcess/Model/ModelProcessProxy.messages.in
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
M Source/WebKit/UIProcess/WebProcessProxy.cpp
M Source/WebKit/UIProcess/WebProcessProxy.h
Log Message:
-----------
[ASan] Generate a crash log when a process is killed for a failed IPC message
check
<https://bugs.webkit.org/show_bug.cgi?id=321120>
<rdar://184153814>
Reviewed by Mike Wyrzykowski, Zak Ridouh, and Charlie Wolfe.
When an incoming IPC message fails a MESSAGE_CHECK, the receiving
process asks for the process that sent it to be terminated. On macOS
that termination is a plain SIGKILL sent through
`xpc_connection_kill()`, which carries no `os_reason`, so the kernel
writes no crash report for the killed process. run-webkit-tests marks
the process crashed but finds no crash log to attach and reports "No
crash log found".
On ASan builds, terminate such a process with `terminate_with_reason()`
in the `OS_REASON_WEBKIT` namespace instead, so the kernel emits a
crash report attributed to the killed process. Encode the failing
`IPC::MessageName` above the low reason-code byte so the report's
termination reason names which message check failed. Only
message-check and watchdog terminations report this way; ordinary
invalidation and client-requested terminations keep the report-less
`xpc_connection_kill()`.
The kill is always issued by the UI process. When a GPU, Networking,
or Model process is the one that detects the invalid message, forward
the failing message name to the UI process through the
`TerminateWebProcess` message so that termination occurs the same
way.
No new tests since this change is not directly testable.
* Source/WebKit/Scripts/webkit/messages.py:
- Add `IPC::MessageName` to the `headers_for_type()` special-cases dict
so message receivers that take an `IPC::MessageName` parameter include
`"MessageNames.h"` rather than the derived (non-existent)
`"MessageName.h"`.
* Source/WebKit/Scripts/webkit/parser_unittest.py:
(_expected_model_test_with_superclass):
- Add the new TestMessageWithMessageName message so the expected model
matches the TestWithSuperclass.messages.in fixture.
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
* Source/WebKit/Scripts/webkit/tests/MessageNames.cpp:
* Source/WebKit/Scripts/webkit/tests/MessageNames.h:
* Source/WebKit/Scripts/webkit/tests/TestWithSuperclass.messages.in:
(TestWithSuperclass::TestMessageWithMessageName): Add.
* Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp:
* Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessages.h:
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::didReceiveInvalidMessage):
(WebKit::GPUConnectionToWebProcess::terminateWebProcess):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:
(WebKit::GPUConnectionToWebProcess::terminateWebProcess):
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::terminateWebProcess):
* Source/WebKit/GPUProcess/GPUProcess.h:
(WebKit::GPUProcess::terminateWebProcess):
* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
(WebKit::RemoteGraphicsContextGL::didReceiveInvalidMessage):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::didReceiveInvalidMessage):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.cpp:
(WebKit::RemoteGPU::didReceiveInvalidMessage):
* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.cpp:
(WebKit::ModelConnectionToWebProcess::didReceiveInvalidMessage):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didReceiveInvalidMessage):
* Source/WebKit/Platform/IPC/Connection.h:
(IPC::Connection::kill):
* Source/WebKit/Platform/IPC/cocoa/ConnectionCocoa.mm:
(IPC::Connection::kill):
* Source/WebKit/Platform/cocoa/XPCUtilities.h:
(WebKit::ReasonCode):
(WebKit::terminateWithReason):
* Source/WebKit/Platform/cocoa/XPCUtilities.mm:
(WebKit::terminateWithReason):
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::terminate):
* Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:
(WebKit::AuxiliaryProcessProxy::terminate):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::didReceiveInvalidMessage):
(WebKit::GPUProcessProxy::terminateWebProcess):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
(WebKit::GPUProcessProxy::terminateWebProcess):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.messages.in:
* Source/WebKit/UIProcess/Model/ModelProcessProxy.cpp:
(WebKit::ModelProcessProxy::terminateWebProcess):
(WebKit::ModelProcessProxy::didReceiveInvalidMessage):
* Source/WebKit/UIProcess/Model/ModelProcessProxy.h:
(WebKit::ModelProcessProxy::terminateWebProcess):
* Source/WebKit/UIProcess/Model/ModelProcessProxy.messages.in:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::terminate):
(WebKit::NetworkProcessProxy::didReceiveInvalidMessage):
(WebKit::NetworkProcessProxy::terminateWebProcess):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
(WebKit::NetworkProcessProxy::terminate):
(WebKit::NetworkProcessProxy::terminateWebProcess):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didReceiveInvalidMessage):
(WebKit::WebProcessProxy::requestTermination):
* Source/WebKit/UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::requestTermination):
Canonical link: https://commits.webkit.org/318804@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications