[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