Bug 179957 - [WPE] Web process crashes on startup (ASSERTION FAILED: !RunLoop::isMain() in WebKit::ThreadedCompositor::frameComplete)
Summary: [WPE] Web process crashes on startup (ASSERTION FAILED: !RunLoop::isMain() in...
Alias: None
Product: WebKit
Classification: Unclassified
Component: WPE WebKit (show other bugs)
Version: Other
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
Depends on:
Blocks: 178894 178896
  Show dependency treegraph
Reported: 2017-11-22 12:49 PST by Michael Catanzaro
Modified: 2017-12-08 12:05 PST (History)
2 users (show)

See Also:


Note You need to log in before you can comment on or make changes to this bug.
Description Michael Catanzaro 2017-11-22 12:49:30 PST
The web process is currently crashing on startup in debug builds:

ASSERTION FAILED: !RunLoop::isMain()
../../Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp(378) : void WebKit::ThreadedCompositor::frameComplete()
1   0x7fd40a46fe2a WTFCrash
2   0x7fd4070ca97f WebKit::ThreadedCompositor::frameComplete()
3   0x7fd4071cee38 WebKit::ThreadedCoordinatedLayerTreeHost::frameComplete()
4   0x7fd4071d1397
5   0x7fd4071d13b7
6   0x7fd3f7ee54b9 wpe_renderer_backend_egl_target_dispatch_frame_complete
7   0x7fd3b18f1a36
8   0x7fd3b18f1a70
9   0x7fd3f4a8eff4 ffi_call_unix64
10  0x7fd3f4a8dfe0 ffi_call
11  0x7fd3f5fc09a3
12  0x7fd3f5fbd7f8
13  0x7fd3f5fbe994 wl_display_dispatch_queue_pending
14  0x7fd3b18f153a
15  0x7fd3b18f1591
16  0x7fd3f8344827 g_main_context_dispatch
17  0x7fd3f8344a38
18  0x7fd3f8344d42 g_main_loop_run
19  0x7fd40a4e1ece WTF::RunLoop::run()
20  0x7fd4071d4283 int WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain>(int, char**)
21  0x7fd4071d3f2f WebProcessMainUnix
22  0x400bc2 main
23  0x7fd3f722703a __libc_start_main
24  0x400a9a _start

I notice this code has not changed in a long time, which is concerning.
Comment 1 Michael Catanzaro 2017-11-22 13:00:23 PST
This is with the fdo backend. It's possible that this is a fdo backend bug, because the mesa backend calls wpe_renderer_backend_egl_target_dispatch_frame_complete() inside its wpe_renderer_backend_egl_target_interface::frame_rendered callback, and that's called by AcceleratedSurfaceWPE::didRenderFrame. I'm not sure if that's called on the main RunLoop or not. But the fdo backend calls wpe_renderer_backend_egl_target_dispatch_frame_complete() inside its wl_callback_listener::done callback, which is wrong because that's called on the main RunLoop.
Comment 2 Michael Catanzaro 2017-12-08 12:05:55 PST
This is fixed in the backend, thanks to Carlos Garcia.