RESOLVED FIXED 257970
ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData)
https://bugs.webkit.org/show_bug.cgi?id=257970
Summary ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData)
Bri Harris
Reported 2023-06-12 11:38:07 PDT
platform/mac/media/unmute-after-loading.html is a flaky crash on macOS Debug. HISTORY: https://results.webkit.org/?suite=layout-tests&test=platform%2Fmac%2Fmedia%2Funmute-after-loading.html STDERR LINK: https://build.webkit.org/results/Apple-Ventura-Debug-AppleSilicon-WK2-Tests/265061@main%20(2760)/platform/mac/media/unmute-after-loading-stderr.txt STDERR TEXT: STDERR TEXT: ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData) /Volumes/Data/worker/Apple-Ventura-Debug-Build/build/Source/WebCore/rendering/RenderLayerCompositor.cpp(1201) : void WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer *, WebCore::RenderLayer &, WebCore::LayerOverlapMap &, WebCore::RenderLayerCompositor::CompositingState &, WebCore::RenderLayerCompositor::BackingSharingState &, bool &) 1 0x151490100 WTFCrash 2 0x107908e40 WebCore::NetworkResourcesData::ResourceData::hasContent() const 3 0x1089ebbcc WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::LayerOverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, WebCore::RenderLayerCompositor::BackingSharingState&, bool&) 4 0x1089eb85c WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::LayerOverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, WebCore::RenderLayerCompositor::BackingSharingState&, bool&) 5 0x1089eb8e4 WebCore::RenderLayerCompositor::computeCompositingRequirements(WebCore::RenderLayer*, WebCore::RenderLayer&, WebCore::LayerOverlapMap&, WebCore::RenderLayerCompositor::CompositingState&, WebCore::RenderLayerCompositor::BackingSharingState&, bool&) 6 0x1089e999c WebCore::RenderLayerCompositor::updateCompositingLayers(WebCore::CompositingUpdateType, WebCore::RenderLayer*) 7 0x107e73008 WebCore::LocalFrameView::updateCompositingLayersAfterLayout() 8 0x107e76334 WebCore::LocalFrameView::didLayout(WTF::WeakPtr<WebCore::RenderElement, WTF::DefaultWeakPtrImpl>) 9 0x107e8f194 WebCore::LocalFrameViewLayoutContext::performLayout() 10 0x107e6d8e0 WebCore::LocalFrameViewLayoutContext::layout() 11 0x107e88680 WebCore::LocalFrameView::updateLayoutAndStyleIfNeededRecursive() 12 0x107ee318c WebCore::Page::layoutIfNeeded() 13 0x107ee3c0c WebCore::Page::updateRendering() 14 0x12cebcce4 WebKit::WebPage::updateRendering() 15 0x12c117990 WebKit::TiledCoreAnimationDrawingArea::updateRendering(WebKit::TiledCoreAnimationDrawingArea::UpdateRenderingType) 16 0x12c11b6cc WebKit::TiledCoreAnimationDrawingArea::renderingUpdateRunLoopCallback() 17 0x12c11d3a4 WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebKit::WebPage&, WebKit::WebPageCreationParameters const&)::$_0::operator()() const 18 0x12c11d350 WTF::Detail::CallableWrapper<WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebKit::WebPage&, WebKit::WebPageCreationParameters const&)::$_0, void>::call() 19 0x1067e1a8c WTF::Function<void ()>::operator()() const 20 0x1081d01d0 WebCore::RunLoopObserver::runLoopObserverFired() 21 0x1081d013c WebCore::RunLoopObserver::runLoopObserverFired(__CFRunLoopObserver*, unsigned long, void*) 22 0x18453d9f0 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ 23 0x18453d8dc __CFRunLoopDoObservers 24 0x18453c514 CFRunLoopRunSpecific 25 0x1854b5fcc -[NSRunLoop(NSRunLoop) runMode:beforeDate:] 26 0x18552eccc -[NSRunLoop(NSRunLoop) run] 27 0x1841ae594 _xpc_objc_main 28 0x1841adeb4 xpc_main 29 0x12b469e58 WebKit::XPCServiceMain(int, char const**) 30 0x12d3eb6d0 WKXPCServiceMain 31 0x10075bfa0 main com.apple.WebKit.WebContent.Development terminated (pid 4291) for reason: crash LEAK: 1 WebPageProxy
Attachments
Radar WebKit Bug Importer
Comment 1 2023-06-12 11:38:35 PDT
Simon Fraser (smfr)
Comment 2 2023-06-15 17:45:44 PDT
I confirmed that this happens when the answer to `canAccelerateVideoRendering()` changes without `RenderLayerBacking::contentChanged(VideoChanged)` being called.
Simon Fraser (smfr)
Comment 3 2023-06-15 18:24:29 PDT
Here's some logging showing the issue: 18:22:34.834 93261 RenderLayerCompositor::requiresCompositingForVideo - layer 0x112001b70 requiresImmediateCompositing:0 shouldDisplayVideo:1 canAccelerateVideoRendering:1 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ad8d0 supportsAcceleratedRendering 1 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ad8d0 supportsAcceleratedRendering 1 18:22:34.834 93261 HTMLMediaElement::prepareForLoad(B188CAA22C26631F) gesture = false 18:22:34.834 93261 HTMLMediaElement::createMediaPlayer(B188CAA22C26631F) 18:22:34.834 93261 VideoLayerManagerObjC::didDestroyVideoLayer(B188CAA22C26631F) 18:22:34.834 93261 VideoLayerManagerObjC::setTextTrackRepresentationLayer(B188CAA22C26631F) 18:22:34.834 93261 HTMLMediaElement::setPlaybackRate(B188CAA22C26631F) 1 18:22:34.834 93261 MediaElementSession::clientWillBeginAutoplaying(B188CAA22C26631F) state = Autoplaying 18:22:34.834 93261 HTMLMediaElement::setShouldDelayLoadEvent(B188CAA22C26631F) true 18:22:34.834 93261 RenderLayerCompositor 0x1103584e0 [LocalFrameView 0x1120000b0 Frame 0x1100ac220 (main frame) file:///Volumes/Data/Development/system/webkit/OpenSource/LayoutTests/platform/mac/media/unmute-after-loading.html] updateCompositingLayers after layout contentLayersCount 6 18:22:34.834 93261 RenderLayerCompositor 0x1103584e0 [LocalFrameView 0x1120000b0 Frame 0x1100ac220 (main frame) file:///Volumes/Data/Development/system/webkit/OpenSource/LayoutTests/platform/mac/media/unmute-after-loading.html] updateCompositingLayers after layout contentLayersCount 6 18:22:34.834 93261 RenderLayerCompositor::computeCompositingRequirements when no change - layer 0x112001b70 video will composite: 1 because is already composited 1 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ae250 supportsAcceleratedRendering 0 18:22:34.834 93261 RenderLayerCompositor::requiresCompositingForVideo - layer 0x112001b70 requiresImmediateCompositing:0 shouldDisplayVideo:1 canAccelerateVideoRendering:0 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ae250 supportsAcceleratedRendering 0 18:22:34.834 93261 RenderLayerCompositor::computeCompositingRequirements - layer 0x112001b70 video will composite later: 0 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ae250 supportsAcceleratedRendering 0 18:22:34.834 93261 RenderLayerCompositor::requiresCompositingForVideo - layer 0x112001b70 requiresImmediateCompositing:0 shouldDisplayVideo:1 canAccelerateVideoRendering:0 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ae250 supportsAcceleratedRendering 0 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ae250 supportsAcceleratedRendering 0 18:22:34.834 93261 RenderLayerCompositor::requiresCompositingForVideo - layer 0x112001b70 requiresImmediateCompositing:0 shouldDisplayVideo:1 canAccelerateVideoRendering:0 18:22:34.834 93261 HTMLMediaElement 0x11202ec30 supportsAcceleratedRendering - player 0x1101ae250 supportsAcceleratedRendering 0 18:22:34.834 93261 willBeComposited (1) != needsToBeComposited(layer, queryData) (0 for layer 0x112001b70 So HTMLMediaElement::createMediaPlayer creates a new MediaPlayer object, which does not support accelerated rendering, but RenderLayerBacking::contentChanged(VideoChanged) was never called.
Robert Jenner
Comment 4 2023-06-20 14:50:52 PDT
*** Bug 258095 has been marked as a duplicate of this bug. ***
Robert Jenner
Comment 5 2023-06-20 14:51:16 PDT
*** Bug 258097 has been marked as a duplicate of this bug. ***
Robert Jenner
Comment 6 2023-06-20 14:54:21 PDT
Marked bugs 258095 and 258097 as duplicates of this bug because the tests mentioned in those are hitting the same assertion, and appear to have a similar regression point. The tests that are hitting the same assertion at: media/track/video-track-add-remove.html media/track/video-track-alternate-groups.html media/modern-media-controls/pip-support/pip-support-enabled.html
Jer Noble
Comment 7 2023-06-29 23:42:29 PDT
EWS
Comment 8 2023-06-30 09:26:59 PDT
Committed 265656@main (05ca73cb5029): <https://commits.webkit.org/265656@main> Reviewed commits have been landed. Closing PR #15435 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.