Closed Bug 1950464 Opened 20 days ago Closed 14 days ago

Assertion failure: aWaylandBuffer && !aWlBuffer (Wayland compositor detach call after wl_buffer delete?)

Categories

(Core :: Widget: Gtk, defect, P3)

defect

Tracking

()

RESOLVED FIXED
138 Branch
Tracking Status
firefox138 --- fixed

People

(Reporter: stransky, Assigned: stransky)

References

(Blocks 1 open bug)

Details

Crash Data

Attachments

(2 files)

[Parent 84660: Renderer]: D/WidgetWayland [7f40a8b84ca0]: WaylandSurface::UnmapLocked()
[Parent 84660: Renderer]: D/WidgetWayland [7f40a8b84ca0]: WaylandSurface::ClearScaleLocked()
[Parent 84660: Renderer]: D/WidgetWayland [7f40a8b84ca0]: WaylandSurface::ReleaseAllWaylandBuffersLocked(), buffers num 1
[Parent 84660: Renderer]: D/WidgetWayland WaylandBuffer::ReturnBufferAttached() [7f409b9bbb40] WaylandSurface [7f409d704900]
[Parent 84660: Renderer]: D/WidgetWayland WaylandBuffer::DeleteWlBuffer() [7f409b9bbb40] wl_buffer [7f4096972a60]
[Parent 84660: Renderer]: D/WidgetWayland [7f40a518f040]: WaylandSurface::UnmapLocked()
[Parent 84660: Renderer]: D/WidgetWayland [7f40a518f040]: WaylandSurface::ClearScaleLocked()
[Parent 84660: Main Thread]: D/WidgetWayland BufferDetachedCallbackHandler() [7f409d704900] received wl_buffer [7f4096972a60]
[Parent 84660: Renderer]: D/WidgetWayland [7f40a518f040]: WaylandSurface::ReleaseAllWaylandBuffersLocked(), buffers num 1
[Parent 84660: Renderer]: D/WidgetWayland WaylandBuffer::ReturnBufferAttached() [7f4094271300] WaylandSurface [7f4094a08e00]
[Parent 84660: Renderer]: D/WidgetWayland WaylandBuffer::DeleteWlBuffer() [7f4094271300] wl_buffer [7f4096972760]
[Parent 84660: Main Thread]: D/WidgetWayland [7f40a8b84ca0]: WaylandSurface::BufferFreeCallbackHandler() WaylandBuffer [0] wl_buffer [7f4096972a60]
[84660] Assertion failure: aWaylandBuffer && !aWlBuffer (Wayland compositor detach call after wl_buffer delete?), at /raid/src3/widget/gtk/WaylandSurface.cpp:1148
Attached file full log

It's possible we get wl_buffer detach callback after wl_buffer delete as the events are waiting in thread queues.
In such case we can't match wl_buffer from wl_buffer::detach as it's already cleared from WaylandBuffer class.
In this patch we always use WaylandBuffer to match detached buffers but we use weak pointer as it's not quaranteed to
get wl_buffer::detach event, for instance if wl_surface/wl_buffer are deleted.

Assignee: nobody → stransky
Status: NEW → ASSIGNED
Attachment #9468876 - Attachment description: Bug 1950464 [Wayland] Use WaylandBuffer instead of wl_buffer to match detached buffer r?emilio → Bug 1950464 [Wayland] Use wl_buffer id instead of wl_buffer to match detached buffer r?emilio
Pushed by stransky@redhat.com: https://hg.mozilla.org/integration/autoland/rev/67e0e7d2174b [Wayland] Use wl_buffer id instead of wl_buffer to match detached buffer r=emilio
Status: ASSIGNED → RESOLVED
Closed: 14 days ago
Resolution: --- → FIXED
Target Milestone: --- → 138 Branch
Duplicate of this bug: 1950048
Duplicate of this bug: 1949739

Copying crash signatures from duplicate bugs.

Crash Signature: [@ mozilla::widget::WaylandSurface::BufferFreeCallbackHandler]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: