Assertion failure in meta_wayland_pointer_constraint_deactivate() after alt-tabbing from game that constrains cursor: "code should not be reached"
Affected version
- Arch Linux x86_64
- Mutter 46.0, Wayland
Bug summary
I was playing Half-Life 1 and frequently alt-tabbing to and from the game window (I had firefox and a terminal open). The sound would stutter instanty after the game stopped being the window in focus. Then after another alt-tab, sound lagged even more and gnome-shell crashed.
Relevant logs, screenshots, screencasts etc.
Backtrace
Core was generated by `/usr/bin/gnome-shell'.
Program terminated with signal SIGABRT, Aborted.
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
[Current thread is 1 (Thread 0x5609c07d4d80 (LWP 2231))]
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00005609c46ab393 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00005609c465a6c8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00005609c55c1109 in dump_gjs_stack_on_signal_handler (signo=6) at ../gnome-shell/src/main.c:467
#4 0x00005609c465a770 in <signal handler called> () at /usr/lib/libc.so.6
#5 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6 0x00005609c46ab393 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#7 0x00005609c465a6c8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8 0x00005609c46424b8 in __GI_abort () at abort.c:79
#9 0x00005609c4f030f4 in g_assertion_message
(domain=domain@entry=0x5609c49f3554 "libmutter", file=file@entry=0x5609c49eba38 "../mutter/src/wayland/meta-wayland-pointer-constraints.c", line=line@entry=562, func=func@entry=0x5609c4a0c180 <__func__.4.lto_priv.43> "meta_wayland_pointer_constraint_deactivate", message=message@entry=0x5609c90fef70 "code should not be reached")
at ../glib/glib/gtestutils.c:3331
#10 0x00005609c4f6ad90 in g_assertion_message_expr
(domain=domain@entry=0x5609c49f3554 "libmutter", file=file@entry=0x5609c49eba38 "../mutter/src/wayland/meta-wayland-pointer-constraints.c", line=line@entry=562, func=func@entry=0x5609c4a0c180 <__func__.4.lto_priv.43> "meta_wayland_pointer_constraint_deactivate", expr=expr@entry=0x0) at ../glib/glib/gtestutils.c:3357
#11 0x00005609c4961cb6 in meta_wayland_pointer_constraint_deactivate (constraint=<optimized out>) at ../mutter/src/wayland/meta-wayland-pointer-constraints.c:562
#12 meta_wayland_pointer_constraint_deactivate (constraint=0x5609ca6dd6e0) at ../mutter/src/wayland/meta-wayland-pointer-constraints.c:548
#13 0x00005609c48bd9c0 in meta_wayland_event_handler_invalidate_focus (sequence=0x0, device=0x5609c716cb80, handler=0x5609c91b16a0)
at ../mutter/src/wayland/meta-wayland-input.c:134
#14 meta_wayland_input_invalidate_focus (input=<optimized out>, sequence=0x0, device=0x5609c716cb80) at ../mutter/src/wayland/meta-wayland-input.c:399
#15 meta_wayland_input_invalidate_focus (sequence=0x0, device=0x5609c716cb80, input=<optimized out>) at ../mutter/src/wayland/meta-wayland-input.c:389
#16 sync_focus_surface (pointer=0x5609c7203500) at ../mutter/src/wayland/meta-wayland-pointer.c:335
#17 repick_for_event (for_event=0x5609ca32af60, pointer=0x5609c7203500) at ../mutter/src/wayland/meta-wayland-pointer.c:616
#18 meta_wayland_pointer_update (event=0x5609ca32af60, pointer=0x5609c7203500) at ../mutter/src/wayland/meta-wayland-pointer.c:639
#19 meta_wayland_seat_update (event=0x5609ca32af60, seat=<optimized out>) at ../mutter/src/wayland/meta-wayland-seat.c:441
#20 meta_wayland_seat_update (event=0x5609ca32af60, seat=<optimized out>) at ../mutter/src/wayland/meta-wayland-seat.c:418
#21 meta_wayland_compositor_update (compositor=0x5609c72022b0, event=0x5609ca32af60) at ../mutter/src/wayland/meta-wayland.c:467
#22 meta_display_handle_event (event_actor=0x5609c7e092c0, event=0x5609ca32af60, display=<optimized out>) at ../mutter/src/core/events.c:297
#23 event_callback (event=0x5609ca32af60, event_actor=0x5609c7e092c0, data=<optimized out>) at ../mutter/src/core/events.c:486
#24 0x00005609c4cbf5e9 in _clutter_event_process_filters (event=0x5609ca32af60, event_actor=0x5609c7e092c0) at ../mutter/clutter/clutter/clutter-event.c:1302
#25 0x00005609c4d00948 in clutter_stage_update_device
(stage=0x5609c71caf40, device=<optimized out>, sequence=0x0, source_device=0x5609c716cb80, point=..., time_ms=0, new_actor=0x5609c7b5e720, clear_area=0x5609c89b34d0, emit_crossing=1) at ../mutter/clutter/clutter/clutter-stage.c:3493
#26 0x00005609c4d29f78 in clutter_stage_pick_and_update_device.constprop.0.isra.0
(stage=0x5609c71caf40, device=0x5609c716cb80, point=..., time_ms=0, flags=(CLUTTER_DEVICE_UPDATE_EMIT_CROSSING | CLUTTER_DEVICE_UPDATE_IGNORE_CACHE), source_device=0x0, sequence=0x0) at ../mutter/clutter/clutter/clutter-stage.c:3611
#27 0x00005609c4cffecc in clutter_stage_update_devices (devices=0x5609ca6418f0 = {...}, stage=0x5609c71caf40) at ../mutter/clutter/clutter/clutter-stage.c:974
#28 handle_frame_clock_frame (frame_clock=<optimized out>, frame=0x5609c835b8e0, user_data=0x5609cc70dba0) at ../mutter/clutter/clutter/clutter-stage-view.c:916
#29 0x00005609c4cc204f in clutter_frame_clock_dispatch (time_us=<optimized out>, frame_clock=0x5609ca565df0) at ../mutter/clutter/clutter/clutter-frame-clock.c:977
#30 frame_clock_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../mutter/clutter/clutter/clutter-frame-clock.c:1026
#31 0x00005609c4f40199 in g_main_dispatch (context=0x5609c6d2e750) at ../glib/glib/gmain.c:3344
#32 0x00005609c4f9f3bf in g_main_context_dispatch_unlocked (context=0x5609c6d2e750) at ../glib/glib/gmain.c:4152
#33 g_main_context_iterate_unlocked.isra.0 (context=0x5609c6d2e750, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217
#34 0x00005609c4f40dc7 in g_main_loop_run (loop=0x5609c7038200) at ../glib/glib/gmain.c:4419
#35 0x00005609c48ca02b in meta_context_run_main_loop (context=<optimized out>, error=0x7fffae294d30) at ../mutter/src/core/meta-context.c:523
#36 0x00005609c3e12596 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#37 0x00005609c3e0f00e in ffi_call_int (cif=cif@entry=0x5609c72a5fd0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0)
at ../src/x86/ffi64.c:673
--Type <RET> for more, q to quit, c to continue without paging--c
#38 0x00005609c3e11bd3 in ffi_call (cif=0x5609c72a5fd0, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>) at ../src/x86/ffi64.c:710
#39 0x00005609c4dc9fe1 in Gjs::Function::invoke (this=0x5609c72a5fb0, context=0x5609c6d5b900, args=..., this_obj=..., r_value=0x0) at ../gjs/gi/function.cpp:1056
#40 0x00005609c4dca688 in Gjs::Function::call (context=0x5609c6d5b900, js_argc=<optimized out>, vp=<optimized out>) at ../gjs/gi/function.cpp:1238
#41 0x00005609c33652da in CallJSNative
(cx=0x5609c6d5b900, native=0x5609c4dca5a0 <Gjs::Function::call(JSContext*, unsigned int, JS::Value*)>, reason=js::CallReason::Call, args=...)
at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:486
#42 js::InternalCallOrConstruct (cx=0x5609c6d5b900, args=..., construct=<optimized out>, reason=js::CallReason::Call)
at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:566
#43 0x00005609c2fd8b01 in InternalCall (args=..., cx=<optimized out>, reason=<optimized out>) at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:647
#44 js::CallFromStack (args=..., cx=<optimized out>, reason=<optimized out>) at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:652
#45 js::Interpret (cx=<optimized out>, state=...) at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:3395
#46 0x00005609c2fd3ec5 in MaybeEnterInterpreterTrampoline (cx=0x5609c6d5b900, state=...) at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:400
#47 js::RunScript (cx=0x5609c6d5b900, state=...) at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:458
#48 js::InternalCallOrConstruct (cx=0x5609c6d5b900, args=..., construct=js::NO_CONSTRUCT, reason=<optimized out>)
at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:612
#49 InternalCall (cx=0x5609c6d5b900, args=..., reason=<optimized out>) at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:647
#50 js::Call (cx=0x5609c6d5b900, fval=..., thisv=..., args=..., rval=..., reason=<optimized out>) at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/Interpreter.cpp:679
#51 0x00005609c34ba1b1 in JS::Call (cx=0x5609c6d5b900, thisv=..., fval=..., args=..., rval=...)
at /usr/src/debug/js115/firefox-115.9.0/js/src/vm/CallAndConstruct.cpp:117
#52 0x00005609c4e00f02 in JS::Call (rval=..., args=..., funObj=..., thisv=..., cx=<optimized out>) at /usr/include/mozjs-115/js/RootingAPI.h:1219
#53 GjsContextPrivate::run_main_loop_hook (this=0x5609c6d52320) at ../gjs/gjs/context.cpp:1491
#54 0x00005609c4e0917f in GjsContextPrivate::eval_module
(error=0x7fffae2957e0, exit_status_p=0x7fffae2957db "\304\001", identifier=0x5609c702da00 "resource:///org/gnome/shell/ui/init.js", this=0x5609c6d52320)
at ../gjs/gjs/context.cpp:1608
#55 gjs_context_eval_module
(js_context=<optimized out>, identifier=0x5609c702da00 "resource:///org/gnome/shell/ui/init.js", exit_code=0x7fffae2957db "\304\001", error=0x7fffae2957e0)
at ../gjs/gjs/context.cpp:1387
#56 0x00005609c4e09481 in gjs_context_eval_module_file
(js_context=js_context@entry=0x5609c6d524c0, filename=filename@entry=0x5609c55c2640 "resource:///org/gnome/shell/ui/init.js", exit_status_p=exit_status_p@entry=0x7fffae2957db "\304\001", error=error@entry=0x7fffae2957e0) at ../gjs/gjs/context.cpp:1692
#57 0x00005609c55c057f in main (argc=<optimized out>, argv=<optimized out>) at ../gnome-shell/src/main.c:708
@skeller:gnome.org on Matrix also suggested I should post this here:
(gdb) frame 12
#12 meta_wayland_pointer_constraint_deactivate (constraint=0x5609ca6dd6e0) at ../mutter/src/wayland/meta-wayland-pointer-constraints.c:548
Downloading source file /usr/src/debug/mutter/build/../mutter/src/wayland/meta-wayland-pointer-constraints.c
548 meta_wayland_pointer_constraint_deactivate (MetaWaylandPointerConstraint *constraint)
(gdb) print constraint->lifetime
$1 = (unknown: 0xca04e2e0)
Edited by Sebastian Keller