[webkit-changes] [WebKit/WebKit] ce9cd2: [ macOS, iOS ] ASSERTION FAILED: remoteWorkerProce...

Chris Dumez noreply at github.com
Thu May 4 13:51:57 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ce9cd2b20a505c1e2bb9b135fc7e29db3bd1b0e9
      https://github.com/WebKit/WebKit/commit/ce9cd2b20a505c1e2bb9b135fc7e29db3bd1b0e9
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2023-05-04 (Thu, 04 May 2023)

  Changed paths:
    M Source/WebKit/CMakeLists.txt
    M Source/WebKit/DerivedSources-input.xcfilelist
    M Source/WebKit/DerivedSources.make
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    M Source/WebKit/Shared/RemoteWorkerType.h
    A Source/WebKit/Shared/RemoteWorkerType.serialization.in
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/UIProcess/WebProcessProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/WebProcess.h
    M Source/WebKit/WebProcess/WebProcess.messages.in

  Log Message:
  -----------
  [ macOS, iOS ] ASSERTION FAILED: remoteWorkerProcesses().contains(process) in WebKit::WebProcessPool::removeFromRemoteWorkerProcesses
https://bugs.webkit.org/show_bug.cgi?id=256233
rdar://104915398

Reviewed by Alex Christensen.

I haven't been able to reproduce the assertion hit but I am refactoring the code to
make it unlikely the state gets out of sync between the WebProcessPool and the
WebProcessProxy.

The WebProcessPool used to add the WebProcessProxy to the remoteWorkerProcesses()
HashMap. The removal used to happen both from the WebProcessPool and the
WebProcessProxy, depending on the reason.

The new logic is simplified as the WebProcessProxy is now solely in charge of adding
and removing itself from the map. This should make sure that WebProcessProxy cannot
be running remote workers and yet not be in the WebProcessPool map (like the assertion
suggests).

* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishRemoteWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::addRemoteWorkerProcess):
(WebKit::WebProcessPool::removeRemoteWorkerProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::removeFromRemoteWorkerProcesses): Deleted.
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::disableRemoteWorkers):
(WebKit::WebProcessProxy::enableRemoteWorkers):

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




More information about the webkit-changes mailing list