[Wayland] Crashes with src/wayland-client.c:230: wl_proxy_unref: Assertion `proxy->refcount > 0' failed.
Categories
(Core :: Widget: Gtk, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox86 | --- | fixed |
People
(Reporter: stransky, Assigned: stransky)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: regression)
Crash Data
Attachments
(2 files)
Crash with latest trunk with wr-sw when new popup is opened:
firefox: src/wayland-client.c:230: wl_proxy_unref: Assertion `proxy->refcount > 0' failed.
Renderer thread:
#7 0x00007ffb79eb08a4 in abort () at /lib64/libc.so.6
#8 0x00007ffb79eb0789 in _nl_load_domain.cold () at /lib64/libc.so.6
#9 0x00007ffb79ec0026 in annobin_assert.c_end () at /lib64/libc.so.6
#10 0x00007ffb7832375c in wl_proxy_unref (proxy=<optimized out>) at src/wayland-client.c:230
#11 0x00007ffb78324114 in destroy_queued_closure (closure=0x7ffb0a0a6ba0) at src/wayland-client.c:292
#12 0x00007ffb78324fa4 in dispatch_event (display=display@entry=0x7ffb79c63190, queue=0x7ffb79c9a600, queue=<optimized out>) at src/wayland-client.c:1451
#13 0x00007ffb7832519c in dispatch_queue (queue=0x7ffb79c9a600, display=0x7ffb79c63190) at src/wayland-client.c:1591
#14 wl_display_dispatch_queue_pending (display=0x7ffb79c63190, queue=0x7ffb79c9a600) at src/wayland-client.c:1833
#15 0x00007ffb71478799 in mozilla::widget::nsWaylandDisplay::WaitForSyncEnd() (this=0x7ffb310ce680) at /raid/src/widget/gtk/nsWaylandDisplay.cpp:285
#16 0x00007ffb7147866c in mozilla::widget::nsWaylandDisplay::SyncBegin() (this=0x7ffb310ce680) at /raid/src/widget/gtk/nsWaylandDisplay.cpp:235
#17 0x00007ffb71478aaa in mozilla::widget::WaylandDisplayQueueSyncBegin(RefPtr<mozilla::widget::nsWaylandDisplay>) (aDisplay=[(class mozilla::widget::nsWaylandDisplay *) 0x7ffb310ce680])
Main thread:
#1 0x00007ffb7a3b0763 in pthread_mutex_lock () from /lib64/libpthread.so.0
#2 0x00007ffb783250cf in wl_display_prepare_read_queue (display=0x7ffb79c63190, queue=0x7ffb79c63260) at src/wayland-client.c:1665
#3 0x00007ffb7832512c in wl_display_prepare_read (display=<optimized out>) at src/wayland-client.c:1694
#4 0x00007ffb786f4884 in gdk_event_source_prepare (base=0x7ffb79c60200, timeout=<optimized out>) at wayland/gdkeventsource.c:61
#5 0x00007ffb77e595ea in g_main_context_prepare () from /lib64/libglib-2.0.so.0
#6 0x00007ffb77eab623 in g_main_context_iterate.constprop () from /lib64/libglib-2.0.so.0
Assignee | ||
Comment 1•3 years ago
•
|
||
Looks like we should avoid simultaneous calls of g_main_context_iteration() at nsAppShell::ProcessNextNativeEvent() on Main thread and wl_display_dispatch_queue_pending() on Render/Compositor thread.
Assignee | ||
Updated•3 years ago
|
Assignee | ||
Comment 2•3 years ago
|
||
The crash reason here is the simultaneous calls of wl_display_prepare_read_queue() in main thread and wl_display_dispatch_queue_pending() in compositor/render thread. I inspected the crash reports and they all have this pattern. Also according to Wayland doc wl_display_prepare_read_queue() is not thread safe.
Assignee | ||
Comment 3•3 years ago
|
||
Assignee | ||
Comment 4•3 years ago
|
||
Depends on D101156
Assignee | ||
Updated•3 years ago
|
Pushed by stransky@redhat.com: https://hg.mozilla.org/integration/autoland/rev/c46c76db0a48 [Wayland] Dispatch Wayland display queue in main thread only, r=jhorak https://hg.mozilla.org/integration/autoland/rev/813da913ec72 [Wayland] Post SyncBegin() to main thread only and remove thread specific code as it's unused, r=jhorak
Comment 6•3 years ago
|
||
Backed out 2 changesets (bug 1685055) for nsWaylandDisplay related bustage.
Backout link: https://hg.mozilla.org/integration/autoland/rev/057a059129e3e9221baf6711645484dcadf19378
Failure log: https://treeherder.mozilla.org/logviewer?job_id=326385629&repo=autoland&lineNumber=30063
...
[task 2021-01-11T20:20:29.557Z] 20:20:29 INFO - In file included from Unified_cpp_widget_gtk2.cpp:110:
[task 2021-01-11T20:20:29.558Z] 20:20:29 ERROR - /builds/worker/checkouts/gecko/widget/gtk/nsWaylandDisplay.cpp:236:49: error: Refcounted variable 'this' of type 'mozilla::widget::nsWaylandDisplay' cannot be captured by a lambda
[task 2021-01-11T20:20:29.558Z] 20:20:29 INFO - [this]() -> void { this->SyncBegin(); }));
[task 2021-01-11T20:20:29.559Z] 20:20:29 INFO - ^
[task 2021-01-11T20:20:29.559Z] 20:20:29 INFO - /builds/worker/checkouts/gecko/widget/gtk/nsWaylandDisplay.cpp:236:49: note: Please consider using a smart pointer
[task 2021-01-11T20:20:29.560Z] 20:20:29 INFO - 6 warnings and 1 error generated.
[task 2021-01-11T20:20:29.560Z] 20:20:29 INFO - /builds/worker/checkouts/gecko/config/rules.mk:674: recipe for target 'Unified_cpp_widget_gtk2.o' failed
[task 2021-01-11T20:20:29.560Z] 20:20:29 ERROR - make[4]: *** [Unified_cpp_widget_gtk2.o] Error 1
Pushed by stransky@redhat.com: https://hg.mozilla.org/integration/autoland/rev/7a868134d5f7 [Wayland] Dispatch Wayland display queue in main thread only, r=jhorak https://hg.mozilla.org/integration/autoland/rev/773f06221b1b [Wayland] Post SyncBegin() to main thread only and remove thread specific code as it's unused, r=jhorak
Comment 9•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/7a868134d5f7
https://hg.mozilla.org/mozilla-central/rev/773f06221b1b
Comment 10•3 years ago
|
||
Regression window:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=7357db10233773daf5a9ab0d84cc850ec4949fb5&tochange=1e7fa4580d070f028b9d2fe572e96da6082381bd
Regressed by Bug 1648698.
Updated•3 years ago
|
Description
•