Crash in pointer_can_grab_surface
Affected version
F37 Silverblue, mutter-43~beta-1.fc37.x86_64
Bug summary
Trying to "Open With" a shell script with gnome-text-editor frequently crashes gnome-shell.
Steps to reproduce
- In the new Nautilus, right click on a file, Open With, select Text Editor, press Open.
What happened
Sometimes gnome-shell crashes, once it didn't crash but showed me a "gnome-text-editor is running in the background" notification for some reason.
What did you expect to happen
gnome-text-editor opens normally.
Relevant logs, screenshots, screencasts etc.
(gdb) bt
#0 0x00007f0e2748140f in meta_get_first_subsurface_node (surface=<optimized out>) at ../src/wayland/meta-wayland-surface.h:397
#1 pointer_can_grab_surface (pointer=0x7f0e040091b0, surface=0x55587c67f450) at ../src/wayland/meta-wayland-pointer.c:1344
#2 0x00007f0e27563ad8 in meta_wayland_pointer_can_grab_surface (serial=624, surface=0x55587c67f450, pointer=<optimized out>) at ../src/wayland/meta-wayland-pointer.c:1359
#3 meta_wayland_seat_get_grab_info (seat=0x55587c294270, surface=0x55587c67f450, serial=624, require_pressed=0, x=0x0, y=0x0) at ../src/wayland/meta-wayland-seat.c:464
#4 0x00007f0e2755796f in token_can_activate (token=<optimized out>) at ../src/wayland/meta-wayland-activation.c:280
#5 activation_activate (client=<optimized out>, resource=<optimized out>, token_str=<optimized out>, surface_resource=<optimized out>) at ../src/wayland/meta-wayland-activation.c:329
#6 0x00007f0e268cf6d6 in ffi_call_unix64 () at ../src/x86/unix64.S:105
#7 0x00007f0e268cc492 in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:672
#8 0x00007f0e26e75728 in wl_closure_invoke (closure=closure@entry=0x55587e000300, target=<optimized out>, target@entry=0x55587d1dd5c0, opcode=opcode@entry=2, data=<optimized out>, data@entry=0x55587ee96680,
flags=2) at ../src/connection.c:1025
#9 0x00007f0e26e79ac8 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=<optimized out>) at ../src/wayland-server.c:437
#10 0x00007f0e26e78532 in wl_event_loop_dispatch (loop=0x55587c320d80, timeout=timeout@entry=0) at ../src/event-loop.c:1027
#11 0x00007f0e2755373b in wayland_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../src/wayland/meta-wayland.c:110
#12 0x00007f0e281b4bff in g_main_dispatch (context=0x55587bcc02f0) at ../glib/gmain.c:3436
#13 g_main_context_dispatch (context=0x55587bcc02f0) at ../glib/gmain.c:4154
#14 0x00007f0e2820a2f8 in g_main_context_iterate.constprop.0 (context=0x55587bcc02f0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4230
#15 0x00007f0e281b41cf in g_main_loop_run (loop=0x55587c87b140) at ../glib/gmain.c:4430
#16 0x00007f0e274dfed9 in meta_context_run_main_loop (context=context@entry=0x55587bcba0c0, error=error@entry=0x7ffec9daefc0) at ../src/core/meta-context.c:445
#17 0x000055587b648e09 in main (argc=<optimized out>, argv=<optimized out>) at ../src/main.c:582
(gdb) list
392 meta_get_first_subsurface_node (MetaWaylandSurface *surface)
393 {
394 GNode *n;
395
396 n = g_node_first_child (surface->subsurface_branch_node);
397 if (!G_NODE_IS_LEAF (n))
398 return n;
399 else
400 return meta_get_next_subsurface_sibling (n);
401 }
(gdb) info locals
n = 0x0
n = <optimized out>
bt full
#0 0x00007f0e2748140f in meta_get_first_subsurface_node (surface=<optimized out>) at ../src/wayland/meta-wayland-surface.h:397
n = 0x0
n = <optimized out>
#1 pointer_can_grab_surface (pointer=0x7f0e040091b0, surface=0x55587c67f450) at ../src/wayland/meta-wayland-pointer.c:1344
__n1344 = <optimized out>
subsurface = <optimized out>
#2 0x00007f0e27563ad8 in meta_wayland_pointer_can_grab_surface (serial=624, surface=0x55587c67f450, pointer=<optimized out>) at ../src/wayland/meta-wayland-pointer.c:1359
No locals.
#3 meta_wayland_seat_get_grab_info (seat=0x55587c294270, surface=0x55587c67f450, serial=624, require_pressed=0, x=0x0, y=0x0) at ../src/wayland/meta-wayland-seat.c:464
compositor = <optimized out>
tablet_seat = <optimized out>
tools = 0x0
l = <optimized out>
#4 0x00007f0e2755796f in token_can_activate (token=<optimized out>) at ../src/wayland/meta-wayland-activation.c:280
seat = <optimized out>
#5 activation_activate (client=<optimized out>, resource=<optimized out>, token_str=<optimized out>, surface_resource=<optimized out>) at ../src/wayland/meta-wayland-activation.c:329
activation = 0x55587c2930b0
surface = <optimized out>
display = 0x55587c3301a0
token = <optimized out>
sequence = 0x55587dfe0340
window = 0x55587c62aac0
#6 0x00007f0e268cf6d6 in ffi_call_unix64 () at ../src/x86/unix64.S:105
No locals.
#7 0x00007f0e268cc492 in ffi_call_int (cif=<optimized out>, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=<optimized out>) at ../src/x86/ffi64.c:672
classes = {X86_64_INTEGER_CLASS, 48, 3386567024, 32766}
stack = 0x7ffec9dae660 ""
argp = 0x7ffec9dae720 ""
arg_types = <optimized out>
gprcount = 4
ssecount = <optimized out>
ngpr = 1
nsse = 0
i = <optimized out>
avn = <optimized out>
flags = <optimized out>
reg_args = 0x7ffec9dae660
#8 0x00007f0e26e75728 in wl_closure_invoke (closure=closure@entry=0x55587e000300, target=<optimized out>, target@entry=0x55587d1dd5c0, opcode=opcode@entry=2, data=<optimized out>, data@entry=0x55587ee96680,
flags=2) at ../src/connection.c:1025
count = <optimized out>
cif = {abi = FFI_UNIX64, nargs = 4, arg_types = 0x7ffec9dae880, rtype = 0x7f0e268d01a0 <ffi_type_void>, bytes = 0, flags = 0}
ffi_types = {0x7f0e268d02a0 <ffi_type_pointer>, 0x7f0e268d02a0 <ffi_type_pointer>, 0x7f0e268d02a0 <ffi_type_pointer>, 0x7f0e268d02a0 <ffi_type_pointer>, 0x7f0e268d02a0 <ffi_type_pointer>,
0x7f0e268d02a0 <ffi_type_pointer>, 0x7f0e268d02a0 <ffi_type_pointer>, 0x7f0e268d02a0 <ffi_type_pointer>, 0x0, 0x55587d4bb150, 0x0, 0x55587c548260, 0x55587d0a35c0, 0x27,
0x7f0e2829a4c0 <private_thread_memory>, 0x7f0e281d3df5 <g_slice_free1+165>, 0x55587d4bb0f0, 0x55587d4bb120, 0x55587d4bb0f0, 0x55587c548260, 0x0, 0x847dc}
ffi_args = {0x7ffec9dae840, 0x7ffec9dae848, 0x55587e000318, 0x55587e000320, 0x55587d1e2d58, 0x55587d1e2d60, 0x55587d1e2d68, 0x55587d1e2d70, 0x55587c0ea260, 0x7f0e26e77030 <log_closure+80>,
0x55587ef02040, 0x55587c320c90, 0x7f0e273f4c80 <main_arena>, 0x2, 0x55587e014838, 0x7f0e272bda46 <__libc_calloc+214>, 0x55587bcb09e0, 0xcb87dcdbd2d40300, 0x7ffec9daeab0, 0x7f0e275c2114,
0x7f0e27642dd0 <xdg_activation_v1_requests.lto_priv+48>, 0x0}
implementation = <optimized out>
#9 0x00007f0e26e79ac8 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=<optimized out>) at ../src/wayland-server.c:437
--Type <RET> for more, q to quit, c to continue without paging--c
client = <optimized out>
connection = <optimized out>
resource = 0x55587d1dd5c0
object = 0x55587d1dd5c0
closure = <optimized out>
message = 0x7f0e27642dd0 <xdg_activation_v1_requests.lto_priv+48>
p = {20, 3932162}
resource_flags = 0
opcode = 2
size = <optimized out>
since = <optimized out>
len = <optimized out>
#10 0x00007f0e26e78532 in wl_event_loop_dispatch (loop=0x55587c320d80, timeout=timeout@entry=0) at ../src/event-loop.c:1027
ep = {{events = 1, data = {ptr = 0x55587c147670, fd = 2081715824, u32 = 2081715824, u64 = 93838527198832}}, {events = 32766, data = {ptr = 0x7f0e28216668, fd = 673277544, u32 = 673277544, u64 = 139698779547240}}, {events = 673243305, data = {ptr = 0x7f0e, fd = 32526, u32 = 32526, u64 = 32526}}, {events = 0, data = {ptr = 0x7fffffff, fd = 2147483647, u32 = 2147483647, u64 = 2147483647}}, {events = 673675288, data = {ptr = 0x2820b94d00007f0e, fd = 32526, u32 = 32526, u64 = 2891514701135511310}}, {events = 32526, data = {ptr = 0x7f0e28277818, fd = 673675288, u32 = 673675288, u64 = 139698779944984}}, {events = 1522734028, data = {ptr = 0x5750000007e, fd = 126, u32 = 126, u64 = 6000069312638}}, {events = 0, data = {ptr = 0x7e5a89c219, fd = 1518977561, u32 = 1518977561, u64 = 542684856857}}, {events = 1886, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 3537109760, data = {ptr = 0xcb87dcdb, fd = -880288549, u32 = 3414678747, u64 = 3414678747}}, {events = 0, data = {ptr = 0x55587bcc02f0, fd = 2076967664, u32 = 2076967664, u64 = 93838522450672}}, {events = 3386568240, data = {ptr = 0xc9daee1800007ffe, fd = 32766, u32 = 32766, u64 = 14545199733393096702}}, {events = 32766, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 2147483647, data = {ptr = 0x7edb1c7000000000, fd = 0, u32 = 0, u64 = 9140931136040468480}}, {events = 21848, data = {ptr = 0x7f0e28208160 <g_trace_mark.constprop.0+144>, fd = 673218912, u32 = 673218912, u64 = 139698779488608}}, {events = 40, data = {ptr = 0xc9daedd000000030, fd = 48, u32 = 48, u64 = 14545199424155418672}}, {events = 32766, data = {ptr = 0x7ffec9daed10, fd = -908399344, u32 = 3386567952, u64 = 140732284988688}}, {events = 3537109760, data = {ptr = 0xc9daed20cb87dcdb, fd = -880288549, u32 = 3414678747, u64 = 14545198671655853275}}, {events = 32766, data = {ptr = 0xcb87dcdbd2d40300, fd = -757857536, u32 = 3537109760, u64 = 14665933548248367872}}, {events = 2, data = {ptr = 0xd2d4030000000000, fd = 0, u32 = 0, u64 = 15191770741562408960}}, {events = 3414678747, data = {ptr = 0x55587c0fb140, fd = 2081403200, u32 = 2081403200, u64 = 93838526886208}}, {events = 673277598, data = {ptr = 0xc9daee2800007f0e, fd = 32526, u32 = 32526, u64 = 14545199802112573198}}, {events = 32766, data = {ptr = 0x55587c31eaf0, fd = 2083646192, u32 = 2083646192, u64 = 93838529129200}}, {events = 120827, data = {ptr = 0x2829a4c000000000, fd = 0, u32 = 0, u64 = 2894025380102930432}}, {events = 32526, data = {ptr = 0x55587c320e70, fd = 2083655280, u32 = 2083655280, u64 = 93838529138288}}, {events = 640411074, data = {ptr = 0xc9df19ac00007f0e, fd = 32526, u32 = 32526, u64 = 14546373547955093262}}, {events = 32766, data = {ptr = 0x2f, fd = 47, u32 = 47, u64 = 47}}, {events = 673817792, data = {ptr = 0x2731ce2400007f0e, fd = 32526, u32 = 32526, u64 = 2824265095352188686}}, {events = 32526, data = {ptr = 0x1, fd = 1, u32 = 1, u64 = 1}}, {events = 8, data = {ptr = 0xc9daedc000000000, fd = 0, u32 = 0, u64 = 14545199355435941888}}, {events = 32766, data = {ptr = 0x8, fd = 8, u32 = 8, u64 = 8}}}
source = <optimized out>
i = 0
count = <optimized out>
has_timers = <optimized out>
#11 0x00007f0e2755373b in wayland_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../src/wayland/meta-wayland.c:110
source = <optimized out>
loop = <optimized out>
#12 0x00007f0e281b4bff in g_main_dispatch (context=0x55587bcc02f0) at ../glib/gmain.c:3436
dispatch = 0x7f0e27553720 <wayland_event_source_dispatch>
prev_source = 0x0
begin_time_nsec = 542688620029
was_in_call = 0
user_data = 0x0
callback = 0x0
cb_funcs = 0x0
cb_data = 0x0
need_destroy = <optimized out>
source = 0x55587c31f9f0
current = 0x55587bd4be10
i = 0
__func__ = <optimized out>
#13 g_main_context_dispatch (context=0x55587bcc02f0) at ../glib/gmain.c:4154
No locals.
#14 0x00007f0e2820a2f8 in g_main_context_iterate.constprop.0 (context=0x55587bcc02f0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4230
max_priority = 2147483647
timeout = 4
some_ready = 1
nfds = 16
allocated_nfds = <optimized out>
fds = <optimized out>
begin_time_nsec = 542684801542
#15 0x00007f0e281b41cf in g_main_loop_run (loop=0x55587c87b140) at ../glib/gmain.c:4430
self = <optimized out>
__func__ = "g_main_loop_run"
#16 0x00007f0e274dfed9 in meta_context_run_main_loop (context=context@entry=0x55587bcba0c0, error=error@entry=0x7ffec9daefc0) at ../src/core/meta-context.c:445
priv = 0x55587bcba050
__func__ = "meta_context_run_main_loop"
#17 0x000055587b648e09 in main (argc=<optimized out>, argv=<optimized out>) at ../src/main.c:582
context = 0x55587bcba0c0
error = 0x0
ecode = 0