Bug 179957
Summary: | [WPE] Web process crashes on startup (ASSERTION FAILED: !RunLoop::isMain() in WebKit::ThreadedCompositor::frameComplete) | ||
---|---|---|---|
Product: | WebKit | Reporter: | Michael Catanzaro <mcatanzaro> |
Component: | WPE WebKit | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | bugs-noreply, mcatanzaro |
Priority: | P2 | ||
Version: | Other | ||
Hardware: | PC | ||
OS: | Linux | ||
Bug Depends on: | |||
Bug Blocks: | 178894, 178896 |
Michael Catanzaro
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.
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Michael Catanzaro
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.
Michael Catanzaro
This is fixed in the backend, thanks to Carlos Garcia.