Crash in meta_output_kms_get_privacy_screen_state
Disconnecting my Thinkpad from a docking station with external monitor attached just killed my shell with the following trace. Looks like a regression from !1952 (merged), thus cc @3v1n0
(gdb) bt full
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44
tid = <optimized out>
ret = 0
pd = <optimized out>
old_mask =
{__val = {558, 106803024, 39, 139902318087597, 0, 139902318202466, 32, 28082608, 139902308497296, 106803024, 24906784, 139902260031370, 139902286493152, 0, 27088864, 28082608}}
ret = <optimized out>
#1 0x00007f3d8b0ac8f3 in __pthread_kill_internal (signo=11, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007f3d8b05f6a6 in __GI_raise (sig=sig@entry=11) at ../sysdeps/posix/raise.c:26
ret = <optimized out>
#3 0x0000000000403006 in dump_gjs_stack_on_signal_handler (signo=11) at ../src/main.c:353
sa =
{__sigaction_handler = {sa_handler = 0x403020 <dump_gjs_stack_alarm_sigaction>, sa_sigaction = 0x403020 <dump_gjs_stack_alarm_sigaction>}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer = 0x0}
i = 65
#4 0x00007f3d8b05f750 in <signal handler called> () at /lib64/libc.so.6
#5 0x00007f3d8b39e55a in meta_output_kms_get_privacy_screen_state (output=<optimized out>) at ../src/backends/native/meta-output-kms.c:109
output_kms = <optimized out>
connector_state = 0x0
#6 0x00007f3d8b2b9a68 in emit_privacy_screen_change (manager=0x179bd00) at ../src/backends/meta-monitor-manager.c:1486
monitor = 0x7c6f1d0
privacy_screen_state = <optimized out>
enabled = <optimized out>
l = 0x7178df0 = {0x7c6f1d0, 0x5723cf0}
reason = <optimized out>
#7 meta_monitor_manager_maybe_emit_privacy_screen_change (manager=manager@entry=0x179bd00) at ../src/backends/meta-monitor-manager.c:1506
reason = <optimized out>
#8 0x00007f3d8b39d021 in on_kms_resources_changed (kms=<optimized out>, changes=META_KMS_UPDATE_CHANGE_FULL, manager=0x179bd00)
at ../src/backends/native/meta-monitor-manager-native.c:530
__func__ = "on_kms_resources_changed"
#9 0x00007f3d8c0872c6 in g_cclosure_marshal_VOID__FLAGSv
(closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x17574d0) at ../gobject/gmarshal.c:1136
data1 = <optimized out>
data2 = <optimized out>
callback = <optimized out>
arg0 = 1
args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7ffc6bd1a0b0, reg_save_area = 0x7ffc6bd19ff0}}
#10 0x00007f3d8c0a6a9a in _g_closure_invoke_va
(param_types=0x17574d0, n_params=<optimized out>, args=0x7ffc6bd19fd0, instance=0x1788bb0, return_value=0x0, closure=0x17c0c20) at ../gobject/gclosure.c:893
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x17c0c00
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 = 0x7ffc6bd1a1a0, instance = 0x1788bb0, ihint = {signal_id = 28, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x179b070 [None]}
signal_id = 28
instance_type = 0x179b070 [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
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"
#11 g_signal_emit_valist (instance=0x1788bb0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffc6bd19fd0) 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 = 0x7ffc6bd1a1a0, instance = 0x1788bb0, ihint = {signal_id = 28, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x179b070 [None]}
signal_id = 28
instance_type = 0x179b070 [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
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"
#12 0x00007f3d8c0a6be3 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 = 0x7ffc6bd1a0b0, reg_save_area = 0x7ffc6bd19ff0}}
#13 0x00007f3d8c087695 in g_cclosure_marshal_VOID__OBJECTv (closure=0x175fe80, return_value=<optimized out>, instance=0x7f3d64006050, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x17576b0) at ../gobject/gmarshal.c:1910
data1 = <optimized out>
data2 = <optimized out>
callback = 0x7f3d8b3ac580 <on_udev_hotplug>
arg0 = 0x3a732b0
args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7ffc6bd1a380, reg_save_area = 0x7ffc6bd1a2c0}}
#14 0x00007f3d8c0a6a9a in _g_closure_invoke_va (param_types=0x17576b0, n_params=<optimized out>, args=0x7ffc6bd1a2a0, instance=0x7f3d64006050, return_value=0x0, closure=0x175fe80) at ../gobject/gclosure.c:893
marshal = <optimized out>
marshal_data = <optimized out>
in_marshal = 0
real_closure = 0x175fe60
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 = 0x7ffc6bd1a6c0, instance = 0x7f3d64006050, ihint = {signal_id = 24, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x17894b0 [None]}
signal_id = 24
instance_type = 0x17894b0 [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
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"
#15 g_signal_emit_valist (instance=0x7f3d64006050, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffc6bd1a2a0) 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 = 0x7ffc6bd1a6c0, instance = 0x7f3d64006050, ihint = {signal_id = 24, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x17894b0 [None]}
signal_id = 24
instance_type = 0x17894b0 [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
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"
#16 0x00007f3d8c0a6be3 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 = 0x7ffc6bd1a380, reg_save_area = 0x7ffc6bd1a2c0}}
#17 0x00007f3d8a6edc04 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#18 0x00007f3d8a6ed108 in ffi_call (cif=cif@entry=0x7ffc6bd1a550, fn=fn@entry=0x7f3d8b3bcc60 <on_uevent>, rvalue=<optimized out>, avalue=avalue@entry=0x7ffc6bd1a480) at ../src/x86/ffi64.c:525
classes = {X86_64_INTEGER_CLASS, X86_64_NO_CLASS, 24123120, X86_64_NO_CLASS}
stack = <optimized out>
argp = 0x7ffc6bd1a380 ""
arg_types = <optimized out>
gprcount = 4
ssecount = <optimized out>
ngpr = 1
nsse = 0
i = <optimized out>
avn = <optimized out>
ret_in_memory = <optimized out>
reg_args = <optimized out>
#23 0x00007f3d8c0a6be3 in <emit signal ??? on instance ???> (instance=instance@entry=0x174b260, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3553
var_args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7ffc6bd1aa10, reg_save_area = 0x7ffc6bd1a950}}
#19 0x00007f3d8c08ebfd in g_cclosure_marshal_generic (closure=closure@entry=0x176fec0, return_gvalue=return_gvalue@entry=0x0, n_param_values=n_param_values@entry=3, param_values=param_values@entry=0x7ffc6bd1a750, invocation_hint=invocation_hint@entry=0x7ffc6bd1a6d0, marshal_data=marshal_data@entry=0x0) at ../gobject/gclosure.c:1534
rtype = <optimized out>
rvalue = 0x7ffc6bd1a4e0
n_args = <optimized out>
atypes = <optimized out>
args = <optimized out>
i = <optimized out>
cif = {abi = FFI_UNIX64, nargs = 4, arg_types = 0x7ffc6bd1a4b0, rtype = 0x7f3d8a6ee0d0 <ffi_type_void>, bytes = 0, flags = 0}
cc = 0x176fec0
enum_tmpval = 0x7ffc6bd1a4f0
tmpval_used = 0
#20 0x00007f3d8c088c7f in g_closure_invoke (closure=0x176fec0, return_value=0x0, n_param_values=3, param_values=0x7ffc6bd1a750, invocation_hint=0x7ffc6bd1a6d0) at ../gobject/gclosure.c:830
marshal = 0x7f3d8c08e770 <g_cclosure_marshal_generic>
marshal_data = 0x0
in_marshal = 0
real_closure = 0x176fea0
__func__ = "g_closure_invoke"
#21 0x00007f3d8c0a5106 in signal_emit_unlocked_R (node=node@entry=0x17948b0, detail=detail@entry=0, instance=instance@entry=0x174b260, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc6bd1a750) at ../gobject/gsignal.c:3742
tmp = <optimized out>
handler = 0x17682a0
accumulator = 0x0
emission = {next = 0x0, instance = 0x174b260, ihint = {signal_id = 27, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x4}
hlist = <optimized out>
handler_list = 0x17682a0
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 = 27
max_sequential_handler_number = 4867246
return_value_altered = 0
#22 0x00007f3d8c0a69ca in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc6bd1a930) at ../gobject/gsignal.c:3497
instance_and_params = 0x7ffc6bd1a750
signal_return_type = <optimized out>
param_values = 0x7ffc6bd1a768
node = <optimized out>
i = <optimized out>
n_params = <optimized out>
__func__ = "g_signal_emit_valist"
#24 0x00007f3d8812b249 in monitor_event (source=<optimized out>, condition=<optimized out>, data=0x174b260) at ../gudev/gudevclient.c:90
client = 0x174b260
device = 0x3a732b0
udevice = 0x3c13eb0
#25 0x00007f3d8bf8f130 in g_main_dispatch (context=0x171daa0) at ../glib/gmain.c:3381
dispatch = 0x7f3d8bfe27d0 <g_io_unix_dispatch>
prev_source = 0x0
begin_time_nsec = 44160794878182
was_in_call = <optimized out>
user_data = 0x174b260
callback = 0x7f3d8812b1f0 <monitor_event>
cb_funcs = 0x7f3d8c0733e0 <g_source_callback_funcs>
cb_data = 0x1784980
need_destroy = <optimized out>
source = 0x1722460
current = 0x1791800
i = 0
#26 g_main_context_dispatch (context=0x171daa0) at ../glib/gmain.c:4099
#27 0x00007f3d8bfe4208 in g_main_context_iterate.constprop.0 (context=0x171daa0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4175
max_priority = 2147483647
timeout = 4
some_ready = 1
nfds = 16
allocated_nfds = 17
fds = <optimized out>
begin_time_nsec = 44160793020167
#28 0x00007f3d8bf8e853 in g_main_loop_run (loop=0x3bfb110) at ../glib/gmain.c:4373
__func__ = "g_main_loop_run"
#29 0x00007f3d8b309776 in meta_context_run_main_loop (context=context@entry=0x171ae00, error=error@entry=0x7ffc6bd1abc8) at ../src/core/meta-context.c:433
priv = 0x171ada0
__func__ = "meta_context_run_main_loop"
#30 0x0000000000402898 in main (argc=<optimized out>, argv=<optimized out>) at ../src/main.c:563
context = 0x171ae00
error = 0x0
ecode = 0