Bug 307414

Summary: [GTK][WPE][Coordinated Graphics] ASSERTION FAILURE: (!reasons.contains(CompositionReason::RenderingUpdate) || !m_sceneState->pendingTiles()) in WebKit::ThreadedCompositor::flushCompositingState
Product: WebKit Reporter: Fujii Hironori <fujii>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
thr apply all bt
none
debug patch to assert none

Fujii Hironori
Reported 2026-02-09 23:27:19 PST
[GTK][WPE][Coordinated Graphics] ASSERTION FAILURE: (!reasons.contains(CompositionReason::RenderingUpdate) || !m_sceneState->pendingTiles()) in WebKit::ThreadedCompositor::flushCompositingState #0 0x00007f6a181d0629 in WTFCrash () at ../../../Source/WTF/wtf/Assertions.cpp:380 #1 0x00007f6a23b6be08 in WTFCrashWithInfo () at WTF/Headers/wtf/Assertions.h:987 #2 0x00007f6a265f391a in WebKit::ThreadedCompositor::flushCompositingState (this=0x7f6a010545d0, reasons=...) at ../../../Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp:255 #3 0x00007f6a265f1c07 in WebKit::ThreadedCompositor::renderLayerTree (this=0x7f6a010545d0) at ../../../Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp:401 #4 0x00007f6a26601692 in WTF::RunLoop::Timer::Timer<WebKit::ThreadedCompositor>(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral, WebKit::ThreadedCompositor*, void (WebKit::ThreadedCompositor::*)()) requires WTF::HasThreadSafeWeakPtrFunctions<WebKit::ThreadedCompositor>::value::{lambda()#1}::operator()() const (this=0x7f6a010d2408) at WTF/Headers/wtf/RunLoop.h:210 #5 0x00007f6a266014b9 in WTF::Detail::CallableWrapper<WTF::RunLoop::Timer::Timer<WebKit::ThreadedCompositor>(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral, WebKit::ThreadedCompositor*, void (WebKit::ThreadedCompositor::*)()) requires WTF::HasThreadSafeWeakPtrFunctions<WebKit::ThreadedCompositor>::value::{lambda()#1}, void>::call() (this=0x7f6a010d2400) at WTF/Headers/wtf/Function.h:59 #6 0x00007f6a23b75a22 in WTF::Function<void ()>::operator()() const (this=0x7f6a01054680) at WTF/Headers/wtf/Function.h:103 #7 0x00007f6a24bb69c9 in WTF::RunLoop::Timer::fired (this=0x7f6a01054648) at WTF/Headers/wtf/RunLoop.h:262 #8 0x00007f6a18687eda in WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral)::$_0::operator()(void*) const (this=0x7f695affc407, userData=0x7f6a01054648) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:328 #9 0x00007f6a18687e89 in WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral)::$_0::__invoke(void*) (userData=0x7f6a01054648) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:320 #10 0x00007f6a18686372 in WTF::RunLoop::$_3::operator() (this=0x7f695affc4b7, source=0x55dd28da2600, callback=0x7f6a18687e70 <WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral)::$_0::__invoke(void*)>, userData=0x7f6a01054648) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:116 #11 0x00007f6a18683cc9 in WTF::RunLoop::$_3::__invoke (source=0x55dd28da2600, callback=0x7f6a18687e70 <WTF::RunLoop::TimerBase::TimerBase(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral)::$_0::__invoke(void*)>, userData=0x7f6a01054648) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:89 #12 0x00007f6a18f5140e in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #13 0x00007f6a18f51680 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #14 0x00007f6a186847d7 in WTF::RunLoop::runGLibMainLoopIteration (this=0x7f6a01104110, mayBlock=WTF::RunLoop::MayBlock::Yes) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:191 #15 0x00007f6a18684be0 in WTF::RunLoop::runGLibMainLoop (this=0x7f6a01104110) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:200 #16 0x00007f6a18684c7c in WTF::RunLoop::run () at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:213 #17 0x00007f6a18471182 in WTF::RunLoop::create(WTF::ASCIILiteral, WTF::ThreadType, WTF::Thread::QOS)::$_0::operator()() const (this=0x7f6a010fa948) at ../../../Source/WTF/wtf/RunLoop.cpp:112 #18 0x00007f6a18471139 in WTF::Detail::CallableWrapper<WTF::RunLoop::create(WTF::ASCIILiteral, WTF::ThreadType, WTF::Thread::QOS)::$_0, void>::call() (this=0x7f6a010fa940) at ../../../Source/WTF/wtf/Function.h:59 #19 0x00007f6a165e0b22 in WTF::Function<void ()>::operator()() const (this=0x7f695affc710) at WTF/Headers/wtf/Function.h:103 #20 0x00007f6a185b5b14 in WTF::Thread::entryPoint (newThreadContext=0x7f6a01038900) at ../../../Source/WTF/wtf/Threading.cpp:258 #21 0x00007f6a186988b5 in WTF::wtfThreadEntryPoint (context=0x7f6a01038900) at ../../../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:245 #22 0x00007f6a11388aa4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447 #23 0x00007f6a11415c6c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78 This is reproducible on my PC with the following test: > ./Tools/Scripts/run-webkit-tests --gtk --debug --no-retry compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html --iter=5000 -f --child=30 --exit-after-n-c=1
Attachments
thr apply all bt (89.14 KB, text/plain)
2026-02-11 20:46 PST, Fujii Hironori
no flags
debug patch to assert (2.21 KB, patch)
2026-02-12 17:46 PST, Fujii Hironori
no flags
Fujii Hironori
Comment 1 2026-02-11 20:46:57 PST
Created attachment 478324 [details] thr apply all bt
Fujii Hironori
Comment 2 2026-02-12 17:46:56 PST
Created attachment 478333 [details] debug patch to assert This assertion failure means that the number of pending tiles isn't zero for CompositionReason::RenderingUpdate. So, I create a debug patch to check when LayerTreeHost::willPaintTile() is called. Then, I got the following backtrace. internals.layerTreeAsText() calls LayerTreeHost::willPaintTile(). ASSERTION FAILED: !m_state.reasons.contains(CompositionReason::RenderingUpdate) ../../../Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp(216) : void WebKit::ThreadedCompositor::DEBUG_willPaintTile() 1 0x7f518ffef060 WebKit::ThreadedCompositor::DEBUG_willPaintTile() 2 0x7f518ffd0dea WebKit::LayerTreeHost::willPaintTile() 3 0x7f51904ce4be WebCore::CoordinatedPlatformLayer::willPaintTile() 4 0x7f51969b1737 WebCore::SkiaPaintingEngine::replay(WebCore::GraphicsLayerCoordinated const&, WTF::RefPtr<WebCore::SkiaRecordingResult, WTF::RawPtrTraits<WebCore::SkiaRecordingResult>, WTF::DefaultRefDerefTraits<WebCore::SkiaRecordingResult> > const&, WebCore::IntRect const&) 5 0x7f51904cec1d WebCore::CoordinatedPlatformLayer::replay(WTF::RefPtr<WebCore::SkiaRecordingResult, WTF::RawPtrTraits<WebCore::SkiaRecordingResult>, WTF::DefaultRefDerefTraits<WebCore::SkiaRecordingResult> > const&, WebCore::IntRect const&) 6 0x7f51904bc4fa WebCore::CoordinatedBackingStoreProxy::updateIfNeeded(WebCore::IntRect const&, WebCore::IntRect const&, float, bool, WTF::Vector<WebCore::IntRect, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc> const&, WebCore::Damage&, WebCore::CoordinatedPlatformLayer&) 7 0x7f51904cdb08 WebCore::CoordinatedPlatformLayer::updateBackingStore() 8 0x7f51904e3aa8 WebCore::GraphicsLayerCoordinated::updateBackingStoreIfNeeded() 9 0x7f51904e0975 WebCore::GraphicsLayerCoordinated::updateBackingStoresIfNeeded() 10 0x7f51904e09ea WebCore::GraphicsLayerCoordinated::updateBackingStoresIfNeeded() 11 0x7f51904e09ea WebCore::GraphicsLayerCoordinated::updateBackingStoresIfNeeded() 12 0x7f51904e09ea WebCore::GraphicsLayerCoordinated::updateBackingStoresIfNeeded() 13 0x7f51904e09ea WebCore::GraphicsLayerCoordinated::updateBackingStoresIfNeeded() 14 0x7f51904e04b5 WebCore::GraphicsLayerCoordinated::flushCompositingState(WebCore::FloatRect const&) 15 0x7f5196f47657 WebCore::RenderLayerCompositor::flushPendingLayerChanges(bool) 16 0x7f5196f557ca WebCore::RenderLayerCompositor::updateCompositingForLayerTreeAsTextDump() 17 0x7f5196f5591a WebCore::RenderLayerCompositor::layerTreeAsText(WTF::OptionSet<WebCore::LayerTreeAsTextOptions, (WTF::ConcurrencyTag)0>, unsigned int) 18 0x7f5125baa995 WebCore::Internals::layerTreeAsText(WebCore::Document&, unsigned short) const 19 0x7f5125e211d9 WebCore::jsInternalsPrototypeFunction_layerTreeAsTextBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSInternals*) 20 0x7f5125e20f27 long WebCore::IDLOperation<WebCore::JSInternals>::call<&WebCore::jsInternalsPrototypeFunction_layerTreeAsTextBody, (WebCore::CastedThisErrorBehavior)0>(JSC::JSGlobalObject&, JSC::CallFrame&, char const*) 21 0x7f5125d91dc4 WebCore::jsInternalsPrototypeFunction_layerTreeAsText(JSC::JSGlobalObject*, JSC::CallFrame*) 22 0x7f512820c038 ???
Fujii Hironori
Comment 3 2026-02-12 18:31:08 PST
EWS
Comment 4 2026-02-18 04:06:06 PST
Committed 307753@main (544940efdb5a): <https://commits.webkit.org/307753@main> Reviewed commits have been landed. Closing PR #58578 and removing active labels.
Radar WebKit Bug Importer
Comment 5 2026-02-18 04:07:12 PST
Note You need to log in before you can comment on or make changes to this bug.