Crash in `session_close`
- Fedora 35
- xdg-desktop-portal-gnome 41.1
I quite regularly observe crashes in session_close
.
STR: 0. Have a laptop and an external monitor
- Boot the laptop with the external display connected
- Open the Discord web app in Firefox
- Share your external screen in Discord
- Stop the sharing after some time
- Disconnect the external monitor
Backtrace
Program terminated with signal SIGSEGV, Segmentation fault.
warning: Section `.reg-xstate/86422' in core file too small.
#0 0x00000000400000e3 in ?? ()
[Current thread is 1 (Thread 0x7f8c2d6e79c0 (LWP 86422))]
(gdb) bt full
#0 0x00000000400000e3 in ()
#1 0x00007f8c317d50ff in session_close (session=0x7f8c32da7650) at ../src/session.c:83
#2 0x00007f8c312edaba in _g_closure_invoke_va (param_types=0x0, n_params=<optimized out>, args=0x7fff68376730, instance=0x7f8c32e02ec0, return_value=0x0, closure=0x7f8c32db7f90) at ../gobject/gclosure.c:893
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x7f8c32db7f70
return_accu = 0x0
accu =
{g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
accumulator = 0x0
emission =
{next = 0x7fff68376b30, instance = 0x7f8c32e02ec0, ihint = {signal_id = 227, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x7f8c32ac0710 [None]}
signal_id = 227
instance_type = 0x7f8c32ac0710 [None]
emission_return =
{g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
rtype = 0x4 [None]
static_scope = 0
fastpath_handler = <optimized out>
closure = <optimized out>
run_type = <optimized out>
hlist = <optimized out>
l = <optimized out>
fastpath = 1
instance_and_params = <optimized out>
signal_return_type = <optimized out>
param_values = <optimized out>
node = <optimized out>
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#3 g_signal_emit_valist (instance=0x7f8c32e02ec0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff68376730) at ../gobject/gsignal.c:3406
return_accu = 0x0
accu =
{g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
accumulator = 0x0
emission =
{next = 0x7fff68376b30, instance = 0x7f8c32e02ec0, ihint = {signal_id = 227, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x7f8c32ac0710 [None]}
signal_id = 227
instance_type = 0x7f8c32ac0710 [None]
emission_return =
{g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
rtype = 0x4 [None]
static_scope = 0
fastpath_handler = <optimized out>
closure = <optimized out>
run_type = <optimized out>
hlist = <optimized out>
l = <optimized out>
fastpath = 1
instance_and_params = <optimized out>
signal_return_type = <optimized out>
param_values = <optimized out>
node = <optimized out>
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#4 0x00007f8c312edc03 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3553
var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fff68376810, reg_save_area = 0x7fff68376750}}
#5 0x00007f8c30312c04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#6 0x00007f8c30312108 in ffi_call (cif=cif@entry=0x7fff683769c0, fn=fn@entry=0x7f8c317cb280 <on_mutter_session_closed>, rvalue=<optimized out>, avalue=avalue@entry=0x7fff68376910) at ../src/x86/ffi64.c:525
classes = {X86_64_INTEGER_CLASS, X86_64_NO_CLASS, 335697856, 32652}
stack = <optimized out>
argp = 0x7fff68376810 ""
arg_types = <optimized out>
gprcount = 2
ssecount = <optimized out>
ngpr = 1
nsse = 0
i = <optimized out>
avn = <optimized out>
ret_in_memory = <optimized out>
reg_args = <optimized out>
#9 0x00007f8c312ec126 in <emit signal ??? on instance ???> (node=<optimized out>, detail=0, instance=0x7f8c32dbdb40, emission_return=0x0, instance_and_params=0x7f8c32e6c340) at ../gobject/gsignal.c:3742
tmp = <optimized out>
handler = 0x7f8c32e49580
accumulator = 0x0
emission = {next = 0x7fff68376db0, instance = 0x7f8c32dbdb40, ihint = {signal_id = 225, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x4 [None]}
hlist = <optimized out>
handler_list = 0x7f8c32e49580
return_accu = 0x0
accu = {g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 225
max_sequential_handler_number = 2156
return_value_altered = 0
#7 0x00007f8c312d5bfd in g_cclosure_marshal_generic (closure=closure@entry=0x7f8c32e62810, return_gvalue=return_gvalue@entry=0x0, n_param_values=n_param_values@entry=1, param_values=param_values@entry=0x7f8c32e6c340, invocation_hint=invocation_hint@entry=0x7fff68376b40, marshal_data=marshal_data@entry=0x0) at ../gobject/gclosure.c:1534
rtype = <optimized out>
rvalue = 0x7fff68376950
n_args = <optimized out>
atypes = <optimized out>
args = <optimized out>
i = <optimized out>
cif = {abi = FFI_UNIX64, nargs = 2, arg_types = 0x7fff68376930, rtype = 0x7f8c303130d0 <ffi_type_void>, bytes = 0, flags = 0}
cc = 0x7f8c32e62810
enum_tmpval = 0x7fff68376960
tmpval_used = 0
#8 0x00007f8c312cfc7f in g_closure_invoke (closure=0x7f8c32e62810, return_value=0x0, n_param_values=1, param_values=0x7f8c32e6c340, invocation_hint=0x7fff68376b40) at ../gobject/gclosure.c:830
marshal = 0x7f8c312d5770 <g_cclosure_marshal_generic>
marshal_data = 0x0
in_marshal = 0
real_closure = 0x7f8c32e627f0
__func__ = "g_closure_invoke"
#10 0x00007f8c317c96ca in org_gnome_mutter_screen_cast_session_proxy_g_signal (proxy=0x7fff68376be0, sender_name=<optimized out>, signal_name=<optimized out>, parameters=<optimized out>) at src/shell-dbus.c:9831
info = 0x7f8c317ffb40 <_org_gnome_mutter_screen_cast_session_signal_info_closed>
iter = {x = {140239607929088, 0, 0, 0, 140734941850736, 140240080660844, 140240102445408, 3579507750, 140734941850896, 140734941851008, 140733193388032, 140733193388035, 144, 140734941851200, 140734941851200, 140734941851200}}
child = 0x0
paramv = 0x7f8c32e6c340
num_params = 0
n = <optimized out>
signal_id = <optimized out>
#14 0x00007f8c312edc03 in <emit signal ??? on instance ???> (instance=instance@entry=0x7f8c32dbdb40, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3553
var_args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fff68377120, reg_save_area = 0x7fff68377060}}
#11 0x00007f8c312cfc7f in g_closure_invoke (closure=0x7f8c10009340, return_value=0x0, n_param_values=4, param_values=0x7fff68376e40, invocation_hint=0x7fff68376dc0) at ../gobject/gclosure.c:830
marshal = 0x7f8c312d1b40 <g_type_class_meta_marshal>
marshal_data = 0x90
in_marshal = 0
real_closure = 0x7f8c10009320
__func__ = "g_closure_invoke"
#12 0x00007f8c312ebb14 in signal_emit_unlocked_R (node=node@entry=0x7f8c10009370, detail=detail@entry=0, instance=instance@entry=0x7f8c32dbdb40, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fff68376e40) at ../gobject/gsignal.c:3781
accumulator = 0x0
emission = Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str
{next = 0x0, instance = 0x7f8c32dbdb40, ihint = {signal_id = 17, detail = 0, run_type = (G_SIGNAL_RUN_LAST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = }
hlist = <optimized out>
handler_list = <optimized out>
return_accu = 0x0
accu = {g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 17
max_sequential_handler_number = 2156
return_value_altered = 0
#13 0x00007f8c312ed9ea in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fff68377040) at ../gobject/gsignal.c:3497
instance_and_params = 0x7fff68376e40
signal_return_type = <optimized out>
param_values = 0x7fff68376e58
node = <optimized out>
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#15 0x00007f8c31430595 in on_signal_received (connection=<optimized out>, sender_name=0x7f8c1401a350 ":1.16", object_path=<optimized out>, interface_name=<optimized out>, signal_name=0x7f8c140257c0 "Closed", parameters=0x7f8c14039900, user_data=0x7f8c32df0980) at ../gio/gdbusproxy.c:891
proxy_weak = 0x7f8c32df0980
proxy = 0x7f8c32dbdb40
#16 0x00007f8c3141c23f in emit_signal_instance_in_idle_cb (data=data@entry=0x7f8c14013c30) at ../gio/gdbusconnection.c:3804
signal_instance = 0x7f8c14013c30
parameters = 0x7f8c14039900
has_subscription = 1
#17 0x00007f8c3154339b in g_idle_dispatch (source=0x7f8c14014970, callback=0x7f8c3141c1c0 <emit_signal_instance_in_idle_cb>, user_data=0x7f8c14013c30) at ../glib/gmain.c:5897
again = <optimized out>
#18 0x00007f8c3154705f in g_main_dispatch (context=0x7f8c32a88140) at ../glib/gmain.c:3381
dispatch = 0x7f8c31543380 <g_idle_dispatch>
prev_source = 0x0
begin_time_nsec = 27907069163195
was_in_call = <optimized out>
user_data = 0x7f8c14013c30
callback = 0x7f8c3141c1c0 <emit_signal_instance_in_idle_cb>
cb_funcs = 0x7f8c3162b3e0 <g_source_callback_funcs>
cb_data = 0x7f8c1402fad0
need_destroy = <optimized out>
source = 0x7f8c14014970
current = 0x7f8c32aad970
i = 0
#19 g_main_context_dispatch (context=0x7f8c32a88140) at ../glib/gmain.c:4099
#20 0x00007f8c3159c298 in g_main_context_iterate.constprop.0 (context=0x7f8c32a88140, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4175
max_priority = 2147483647
timeout = -1
some_ready = 1
nfds = 2
allocated_nfds = 2
fds = <optimized out>
begin_time_nsec = 27885399087970
#21 0x00007f8c31546773 in g_main_loop_run (loop=0x7f8c32ab2fa0) at ../glib/gmain.c:4373
__func__ = "g_main_loop_run"
#22 0x00007f8c317bce07 in main (argc=<optimized out>, argv=<optimized out>) at ../src/xdg-desktop-portal-gnome.c:245
owner_id = 1
error = 0x0
session_bus = <optimized out>
context = 0x7f8c32ae1c60