[webkit-changes] [WebKit/WebKit] e46ab4: REGRESSION(282012 at main): [GTK][WPE][Skia] Crash us...

Nikolas Zimmermann noreply at github.com
Fri Aug 30 00:12:26 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e46ab4de36b4118d8bf1b672cc1b56cc1cf02681
      https://github.com/WebKit/WebKit/commit/e46ab4de36b4118d8bf1b672cc1b56cc1cf02681
  Author: Nikolas Zimmermann <nzimmermann at 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 at 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 at 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


More information about the webkit-changes mailing list