Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4bd0c17eea89ee6f3c609105a538196e5d518886
      
https://github.com/WebKit/WebKit/commit/4bd0c17eea89ee6f3c609105a538196e5d518886
  Author: Matt Woodrow <mattwood...@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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to