Crash on 3-finger swipe: assertion failed: (!priv->frame_in_progress)
Very occassionally (one or two times per week but sometimes more), GNOME crashes in the middle of a 3-finger swipe gesture to switch between workspaces. Unfortunately, I don't have good instructions to reproduce.
Video of bug happening and GNOME crashing:
I am using a ThinkPad X1 Carbon 6th, and GNOME 45.5
Reproducible: Sometimes
Steps to Reproduce:
- Open an electron app or two
- Use the three finger gesture to swipe between workspaces
Actual Results:
Most of the time, the swipe works. But some of the times GNOME will stop mid-swipe and it will crash.
Expected Results:
Swiping always works. GNOME never crashes.
Stack trace:
(gdb) bt full
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
tid = <optimized out>
ret = 0
pd = <optimized out>
old_mask = {__val = {94099516766992}}
ret = <optimized out>
#1 0x00007f787b6ae8a3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007f787b65c8ee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
ret = <optimized out>
#3 0x000055953ed54b86 in dump_gjs_stack_on_signal_handler (signo=6) at ../src/main.c:467
sa = {__sigaction_handler = {sa_handler = 0x55953ed549d0 <dump_gjs_stack_alarm_sigaction>, sa_sigaction = 0x55953ed549d0 <dump_gjs_stack_alarm_sigaction>}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer = 0x0}
i = <optimized out>
#4 0x00007f787b65c9a0 in <signal handler called> () at /lib64/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
tid = <optimized out>
ret = 0
pd = <optimized out>
old_mask = {__val = {0}}
ret = <optimized out>
#6 0x00007f787b6ae8a3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#7 0x00007f787b65c8ee in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
ret = <optimized out>
#8 0x00007f787b6448ff in __GI_abort () at abort.c:79
save_stage = 1
act = {__sigaction_handler = {sa_handler = 0x20, sa_sigaction = 0x20}, sa_mask = {__val = {94099587743232, 140737234556288, 140155456597285, 0, 16247, 206158430240, 18446744073709551496, 0, 94099649505648, 140737234556256, 140155443467230, 94099649505664, 0, 0, 94099649505664, 135}}, sa_flags = 2084597216, sa_restorer = 0x7ffff0df5580}
#9 0x00007f787c2de056 in g_assertion_message
(domain=domain@entry=0x7f787b9c1014 "libmutter", file=file@entry=0x7f787b9cfd20 "../src/compositor/compositor.c", line=line@entry=578, func=func@entry=0x7f787b9d1c60 <__func__.13> "invalidate_top_window_actor_for_views", message=message@entry=0x559546b4cf10 "assertion failed: (!priv->frame_in_progress)") at ../glib/gtestutils.c:3497
lstr = "578\000x\177\000\000`R\245H\225U\000\000Pn\215@\225U\000\000\360U\337\360\377\177\000"
s = 0x5595482ea980 ":C\022\034\220U"
#10 0x00007f787c33fad7 in g_assertion_message_expr
(domain=domain@entry=0x7f787b9c1014 "libmutter", file=file@entry=0x7f787b9cfd20 "../src/compositor/compositor.c", line=line@entry=578, func=func@entry=0x7f787b9d1c60 <__func__.13> "invalidate_top_window_actor_for_views", expr=expr@entry=0x7f787b9cfa2f "!priv->frame_in_progress") at ../glib/gtestutils.c:3523
s = 0x559546b4cf10 "assertion failed: (!priv->frame_in_progress)"
#11 0x00007f787b8b71be in invalidate_top_window_actor_for_views.part.0.lto_priv.0 (compositor=<optimized out>) at ../src/compositor/compositor.c:578
priv = <optimized out>
__func__ = {<optimized out> <repeats 38 times>}
_g_boolean_var_20 = <optimized out>
#12 0x00007f787b8bb641 in invalidate_top_window_actor_for_views (compositor=<optimized out>) at ../src/compositor/compositor.c:1174
priv = 0x5595408d6e50
priv = <optimized out>
__func__ = {<optimized out> <repeats 38 times>}
_g_boolean_var_20 = <optimized out>
#13 on_window_visibility_updated (display=<optimized out>, unplaced=<optimized out>, should_show=<optimized out>, should_hide=<optimized out>, compositor=<optimized out>) at ../src/compositor/compositor.c:1173
#14 0x00007f787ac9b056 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#15 0x00007f787ac975ef in ffi_call_int (cif=cif@entry=0x7ffff0df5920, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
classes = {X86_64_INTEGER_CLASS, X86_64_NO_CLASS, 2060051104, 32632}
stack = <optimized out>
argp = 0x7ffff0df5670 ""
arg_types = <optimized out>
gprcount = 5
ssecount = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
ngpr = 1
nsse = 0
i = <optimized out>
avn = <optimized out>
flags = <optimized out>
reg_args = <optimized out>
#16 0x00007f787ac9a3fe in ffi_call (cif=cif@entry=0x7ffff0df5920, fn=fn@entry=0x7f787b8bb600 <on_window_visibility_updated>, rvalue=rvalue@entry=0x7ffff0df5880, avalue=avalue@entry=0x7ffff0df5820) at ../src/x86/ffi64.c:710
arg_types = 0x7ffff0df5850
i = <optimized out>
nargs = 5
max_reg_struct_size = <optimized out>
Python Exception <class 'gdb.error'>: value has been optimized out
Fedora analytics: https://retrace.fedoraproject.org/faf/reports/888816/
Edited by Gabriel Rodriguez