Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e46ab4de36b4118d8bf1b672cc1b56cc1cf02681
      
https://github.com/WebKit/WebKit/commit/e46ab4de36b4118d8bf1b672cc1b56cc1cf02681
  Author: Nikolas Zimmermann <nzimmerm...@igalia.com>
  Date:   2024-08-30 (Fri, 30 Aug 2024)

  Changed paths:
    M 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayerSkia.cpp

  Log Message:
  -----------
  REGRESSION(282012@main): [GTK][WPE][Skia] Crash using threaded rendering
https://bugs.webkit.org/show_bug.cgi?id=278452

Reviewed by Carlos Garcia Campos.

Both GTK/WPE use multi-threaded rendering when using the Skia/CPU
backend. In that mode a DisplayList is recorded on the main thread,
containing the commands required to render each of the GraphicLayer
tiles. Those DisplayLists are asynchronously replayed in worker
threads. Since 282012@main, we're getting a random crash during the
replay stage of the rendering.

There are calls to ControlFactory::shared() happening from within the
worker threads -- however ControlFactory is intended to be used from the
main thread only. The proper fix is to construct a ControlFactory per
worker thread, and store it locally in each threads, and use the threads
ControlFactory when replaying the DisplayList, instead of using the
shared one -- the same approach is taken by RemoteDisplayListRecorder in
Apple ports.

Covered by existing tests.

* 
Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayerSkia.cpp:
(WebCore::CoordinatedGraphicsLayer::paintTile):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to