[webkit-changes] [WebKit/WebKit] 5b7e8d: ASSERTION FAILED: !m_messageReceiverMapCount in IP...

aestes noreply at github.com
Wed Aug 16 18:24:35 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5b7e8de571abe57c953f584592ba4ea752156e27
      https://github.com/WebKit/WebKit/commit/5b7e8de571abe57c953f584592ba4ea752156e27
  Author: Andy Estes <aestes at apple.com>
  Date:   2023-08-16 (Wed, 16 Aug 2023)

  Changed paths:
    M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp
    M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h
    M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp
    M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h

  Log Message:
  -----------
  ASSERTION FAILED: !m_messageReceiverMapCount in IPC::MessageReceiver::~MessageReceiver() when running media layout tests
https://bugs.webkit.org/show_bug.cgi?id=260244
rdar://108192298

Reviewed by Jean-Yves Avenard.

GPUConnectionToWebProcess's connection closing results in RemoteMediaSourceProxy::shutdown() being
called, which sends the MediaSourcePrivateRemote::MediaSourcePrivateShuttingDown message with an
async reply. Since the connection is being closed this message is not sent successfully, but its
async reply handler keeps the RemoteMediaSourceProxy alive. When the handler is later invoked upon
message cancellation the GPUConnectionToWebProcess has been destroyed, so RemoteMediaSourceProxy is
unable to remove itself from the GPUConnectionToWebProcess::messageReceiverMap(). This leaves the
RemoteMediaSourceProxy with a non-zero m_messageReceiverMapCount, leading to the assertion mentioned
above.

Fixed this by ensuring RemoteMediaSourceProxy and its RemoteSourceBufferProxys explicitly remove
themselves from the message receiver map before the GPUConnectionToWebProcess is deallocated.

Fixes flaky crashes in existing media layout tests.

* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp:
(WebKit::RemoteMediaSourceProxy::disconnect):
(WebKit::RemoteMediaSourceProxy::~RemoteMediaSourceProxy):
(WebKit::RemoteMediaSourceProxy::shutdown):
* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h:
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:
(WebKit::RemoteSourceBufferProxy::~RemoteSourceBufferProxy):
(WebKit::RemoteSourceBufferProxy::disconnect):
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h:

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




More information about the webkit-changes mailing list