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

Reply via email to