Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ASSERT_NOT_REACHED() in WebKit::CompositingRunLoop::updateCompleted() #180

Closed
blino opened this issue Jan 12, 2017 · 2 comments
Closed

ASSERT_NOT_REACHED() in WebKit::CompositingRunLoop::updateCompleted() #180

blino opened this issue Jan 12, 2017 · 2 comments

Comments

@blino
Copy link

blino commented Jan 12, 2017

In a debug build, ASSERT_NOT_REACHED() can occur in WebKit::CompositingRunLoop::updateCompleted() because
m_updateState is already UpdateState::Completed.

/cc @vertexodessa

@blino
Copy link
Author

blino commented Jan 12, 2017

My test URL is: http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/2017.html?command=run&tests=19&loop=true

Below is the debug I have been able to gather.

http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/js/harness/main-20161221170552.js:114:16: CONSOLE LOG TestExecutor: Test 19:MediaSourceEvents PASSED.

  • [MainThread] ThreadedCompositor::updateSceneState
    1 0xa01f2014 WebKit::ThreadedCoordinatedLayerTreeHost::commitSceneState(WebCore::CoordinatedGraphicsState const&)
    2 0xa01e6cb0 WebKit::CompositingCoordinator::flushPendingLayerChanges()
    3 0xa01f0f08 WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired()
    4 0xa01f12ce WebKit::CoordinatedLayerTreeHost::renderNextFrame()
    5 0xa01f2272 WebKit::ThreadedCoordinatedLayerTreeHost::CompositorClient::renderNextFrame()
    6 0xa01a7f5a WebKit::ThreadedCompositor::renderNextFrame()
    7 0xa0191346
    8 0xa019131a
    9 0x9fd95fd6 WTF::Function<void ()>::operator()() const
    10 0xa0191048
    11 0xa0191032
    12 0xa27c0f8c WTF::RunLoop::performWork()
    13 0xa27f0032
  • [MainThread] CompositingRunLoop::scheduleUpdate(): UpdateState was Completed, starting timer
  • [MainThread] DisplayRefreshMonitor::displayRefreshCallback(): coordinateUpdateCompletionWithClient was 0 right before compareExchangeStrong check
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::updateSceneState(): setting coordinateUpdateCompletionWithClient=0
    http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/js/harness/main-20161221170552.js:114:16: CONSOLE LOG TestExecutor: Longest test is MediaSourceEvents, it takes 0.0847 of its timeout.
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::frameComplete(): after dispatchDisplayRefreshCallback block
  • [ThreadedCompositorWorkQueue] CompositingRunLoop::updateCompleted(): InProgress -> Completed
    http://yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/js/harness/main-20161221170552.js:114:16: CONSOLE LOG TestExecutor: Test 19:MediaSourceEvents STARTED with timeout 30000
  • [MainThread] ThreadedCompositor::updateSceneState
    1 0xa01f2014 WebKit::ThreadedCoordinatedLayerTreeHost::commitSceneState(WebCore::CoordinatedGraphicsState const&)
    2 0xa01e6cb0 WebKit::CompositingCoordinator::flushPendingLayerChanges()
    3 0xa01f0f08 WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired()
    4 0xa01f12ce WebKit::CoordinatedLayerTreeHost::renderNextFrame()
    5 0xa01f2272 WebKit::ThreadedCoordinatedLayerTreeHost::CompositorClient::renderNextFrame()
    6 0xa01a7f5a WebKit::ThreadedCompositor::renderNextFrame()
    7 0xa0191346
    8 0xa019131a
    9 0x9fd95fd6 WTF::Function<void ()>::operator()() const
    10 0xa0191048
    11 0xa0191032
    12 0xa27c0f8c WTF::RunLoop::performWork()
    13 0xa27f0032
  • [MainThread] CompositingRunLoop::scheduleUpdate(): UpdateState was Completed, starting timer
  • [MainThread] DisplayRefreshMonitor::displayRefreshCallback(): coordinateUpdateCompletionWithClient was 0 right before compareExchangeStrong check
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::updateSceneState(): setting coordinateUpdateCompletionWithClient=0
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::frameComplete(): after dispatchDisplayRefreshCallback block
  • [ThreadedCompositorWorkQueue] CompositingRunLoop::updateCompleted(): InProgress -> Completed
  • video player being resized
  • [MainThread] ThreadedCompositor::updateSceneState
    1 0xa01f2014 WebKit::ThreadedCoordinatedLayerTreeHost::commitSceneState(WebCore::CoordinatedGraphicsState const&)
    2 0xa01e6cb0 WebKit::CompositingCoordinator::flushPendingLayerChanges()
    3 0xa01f0f08 WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired()
    4 0xa01f12ce WebKit::CoordinatedLayerTreeHost::renderNextFrame()
    5 0xa01f2272 WebKit::ThreadedCoordinatedLayerTreeHost::CompositorClient::renderNextFrame()
    6 0xa01a7f5a WebKit::ThreadedCompositor::renderNextFrame()
    7 0xa0191346
    8 0xa019131a
    9 0x9fd95fd6 WTF::Function<void ()>::operator()() const
    10 0xa0191048
    11 0xa0191032
    12 0xa27c0f8c WTF::RunLoop::performWork()
    13 0xa27f0032
  • [MainThread] CompositingRunLoop::scheduleUpdate(): UpdateState was Completed, starting timer
  • [MainThread] DisplayRefreshMonitor::displayRefreshCallback(): coordinateUpdateCompletionWithClient was 0 right before compareExchangeStrong check
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::updateSceneState(): setting coordinateUpdateCompletionWithClient=0
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::frameComplete(): after dispatchDisplayRefreshCallback block
  • [ThreadedCompositorWorkQueue] CompositingRunLoop::updateCompleted(): InProgress -> Completed
  • [MainThread] ThreadedCompositor::updateSceneState
    1 0xa01f2014 WebKit::ThreadedCoordinatedLayerTreeHost::commitSceneState(WebCore::CoordinatedGraphicsState const&)
    2 0xa01e6cb0 WebKit::CompositingCoordinator::flushPendingLayerChanges()
    3 0xa01f0f08 WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired()
    4 0xa01f16ac WTF::RunLoop::TimerWebKit::CoordinatedLayerTreeHost::fired()
    5 0xa27f0098
  • [MainThread] CompositingRunLoop::scheduleUpdate(): UpdateState was Completed, starting timer
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::updateSceneState(): setting coordinateUpdateCompletionWithClient=1
  • [MainThread] DisplayRefreshMonitor::displayRefreshCallback(): coordinateUpdateCompletionWithClient was 0 right before compareExchangeStrong check
  • [MainThread] DisplayRefreshMonitor::displayRefreshCallback(): coordinateUpdateCompletionWithClient was 1 at the entry of compareExchangeStrong
    if (m_compositor->m_coordinateUpdateCompletionWithClient.compareExchangeStrong(true, false))
    m_compositor->m_compositingRunLoop->updateCompleted();
  • [MainThread] CompositingRunLoop::updateCompleted(): InProgress -> Completed
  • [ThreadedCompositorWorkQueue] ThreadedCompositor::frameComplete(): after dispatchDisplayRefreshCallback block
  • [ThreadedCompositorWorkQueue] CompositingRunLoop::updateCompleted(): already Completed
    SHOULD NEVER BE REACHED
    /home/sah0146/vc/sah_gitlabinternal/sah_browser/WebKitForWayland-201611/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp(199) : void WebKit::CompositingRunLoop::updateCompleted()
    1 0xa01a3294 WebKit::CompositingRunLoop::updateCompleted()
    2 0xa01a8e26 WebKit::ThreadedCompositor::frameComplete()
    3 0xa1704208
    4 0xa17041e8
    WebProcess did crash

@zdobersek
Copy link

I can reproduce the crash using the hole punching configuration, but on the 2016 suite since WebM isn't yet supported in master, but is needed for the 2017 suite.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants