Bug 257970
Summary: | ASSERTION FAILED: willBeComposited == needsToBeComposited(layer, queryData) | ||
---|---|---|---|
Product: | WebKit | Reporter: | Bri Harris <bharris9> |
Component: | Compositing | Assignee: | Jer Noble <jer.noble> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | ap, jenner, simon.fraser, webkit-bot-watchers-bugzilla, webkit-bug-importer, zalan |
Priority: | P2 | Keywords: | InRadar |
Version: | Other | ||
Hardware: | Unspecified | ||
OS: | Unspecified |
Bri Harris
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 | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/110656130>
Simon Fraser (smfr)
I confirmed that this happens when the answer to `canAccelerateVideoRendering()` changes without `RenderLayerBacking::contentChanged(VideoChanged)` being called.
Simon Fraser (smfr)
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
*** Bug 258095 has been marked as a duplicate of this bug. ***
Robert Jenner
*** Bug 258097 has been marked as a duplicate of this bug. ***
Robert Jenner
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
Pull request: https://github.com/WebKit/WebKit/pull/15435
EWS
Committed 265656@main (05ca73cb5029): <https://commits.webkit.org/265656@main>
Reviewed commits have been landed. Closing PR #15435 and removing active labels.