[webkit-changes] [WebKit/WebKit] 4bd0c1: TestWebKitAPI.GPUProcess.WebProcessTerminationAfte...

mattwoodrow noreply at github.com
Wed Oct 25 12:11:58 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4bd0c17eea89ee6f3c609105a538196e5d518886
      https://github.com/WebKit/WebKit/commit/4bd0c17eea89ee6f3c609105a538196e5d518886
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2023-10-25 (Wed, 25 Oct 2023)

  Changed paths:
    M Source/WebKit/Platform/IPC/Connection.cpp
    M Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp

  Log Message:
  -----------
  TestWebKitAPI.GPUProcess.WebProcessTerminationAfterTooManyGPUProcessCrashes is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=263338
<rdar://117166263>

Reviewed by Kimmo Kinnunen.

nderingBackendProxy::ensureGPUProcessConnection can create both the main connection to the GPU process, and then send the
creation for the stream connection over that.

If the GPUP crashes before that main connection finishes connecting, then the message containing the stream connection
constructor is still in m_outgoingMessages.

We then block the main thread waiting on a sync message from the stream connection. We can’t process the incoming did
close message from the main connection, since we’re blocking the thread, and the stream connection doesn’t stop waiting
because the construction handle is still alive.

Making Connection::connectionDidClose() also clear m_outgoingMessages fixes the timeout.

* Source/WebKit/Platform/IPC/Connection.cpp:
(IPC::Connection::connectionDidClose):
* Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp:
(TestWebKitAPI::MockTestSyncMessage::name):
(TestWebKitAPI::MockTestSyncMessage::arguments):
(TestWebKitAPI::MockTestSyncMessage::MockTestSyncMessage):
(TestWebKitAPI::TEST_F):

Canonical link: https://commits.webkit.org/269773@main




More information about the webkit-changes mailing list