** Description changed:
+ [ Impact ]
+
+ GNOME shell may crash when changing monitor configuration, hotplugging
+ monitors, or changing virtual terminals.
+
+ The bug was inadvertently introduced with the patches for bug 2085423
+ and bug 2121517.
+
+ [ Test Plan ]
+
+ The bug is timing-sensitive and only has very few hits in errors.ubuntu.com,
thus we may not be able to reproduce.
+ Nonetheless,
+
+ 1. Log-in to Ubuntu Desktop
+ 2. Change virtual terminal with Ctrl+Alt+F3
+ 3. Return back to GNOME Shell with Ctrl+Alt+F2
+ 4. Verify that GNOME Shell did not crash and log you out
+
+ We will keep monitoring errors.ubuntu.com for crash reports after this
+ fix.
+
+ [ Where problems could occur ]
+
+ The patch only introduces a NULL check before accessing an invalid monitor
connection state. When that happens, we briefly report the Privacy Screen to be
unavailable until a later time when the monitor connection state settles and we
can report the correct state for Privacy Screen.
+ No regressions are to be expected.
+
+ [ Stacktrace ]
+
#0 0x000074fe9a3a6b72 in meta_output_kms_get_privacy_screen_state
(output=<optimized out>) at ../src/backends/native/meta-output-kms.c:72
- output_kms = <optimized out>
- connector_state = 0x0
+ output_kms = <optimized out>
+ connector_state = 0x0
#1 0x000074fe9a2c147b in meta_output_get_privacy_screen_state
(output=0x63e8ab7f4b40) at ../src/backends/meta-output.c:455
- output_class = <optimized out>
+ output_class = <optimized out>
#2 meta_output_set_privacy_screen_enabled (output=0x63e8ab7f4b40, enabled=0,
error=0x7ffdf4b7f4d0) at ../src/backends/meta-output.c:474
- priv = 0x63e8ab7f4af0
- state = <optimized out>
+ priv = 0x63e8ab7f4af0
+ state = <optimized out>
#3 meta_monitor_set_privacy_screen_enabled (monitor=0x63e8ac47f950,
enabled=0, error=0x7ffdf4b7f4d0) at ../src/backends/meta-monitor.c:2682
- output = 0x63e8ab7f4b40
+ output = 0x63e8ab7f4b40
#4 ensure_privacy_screen_settings (manager=manager@entry=0x63e8a7d86cb0) at
../src/backends/meta-monitor-manager.c:1222
- monitor = 0x63e8ac47f950
- error = 0x0
- settings = <optimized out>
- privacy_screen_enabled = 0
- any_changed = <optimized out>
- l = 0x63e8a7ee2230
+ monitor = 0x63e8ac47f950
+ error = 0x0
+ settings = <optimized out>
+ privacy_screen_enabled = 0
+ any_changed = <optimized out>
+ l = 0x63e8a7ee2230
#5 0x000074fe9a2c6a8d in meta_monitor_manager_rebuild
(manager=0x63e8a7d86cb0, config=0x63e8a85bb3a0) at
../src/backends/meta-monitor-manager.c:4299
- bin = 0x0
+ bin = 0x0
#6 0x000074fe9a3aaa76 in meta_monitor_manager_native_apply_monitors_config
(manager=0x63e8a7d86cb0, config=0x63e8a85bb3a0,
method=META_MONITORS_CONFIG_METHOD_PERSISTENT, error=<optimized out>) at
../src/backends/native/meta-monitor-manager-native.c:304
- crtc_assignments = 0x63e8b27e4510
- output_assignments = 0x63e8afcf24b0
+ crtc_assignments = 0x63e8b27e4510
+ output_assignments = 0x63e8afcf24b0
#7 0x000074fe9a2c1263 in meta_monitor_manager_apply_monitors_config
(manager=manager@entry=0x63e8a7d86cb0, config=config@entry=0x63e8a85bb3a0,
method=method@entry=META_MONITORS_CONFIG_METHOD_PERSISTENT,
error=error@entry=0x7ffdf4b7f640) at ../src/backends/meta-monitor-manager.c:726
- manager_class = <optimized out>
+ manager_class = <optimized out>
#8 0x000074fe9a2c4714 in meta_monitor_manager_ensure_configured
(manager=0x63e8a7d86cb0) at ../src/backends/meta-monitor-manager.c:887
- oriented_config = 0x0
- amended_config = 0x0
- config = 0x63e8a85bb3a0
- error = 0x0
- use_stored_config = <optimized out>
- method = META_MONITORS_CONFIG_METHOD_PERSISTENT
- fallback_method = META_MONITORS_CONFIG_METHOD_TEMPORARY
+ oriented_config = 0x0
+ amended_config = 0x0
+ config = 0x63e8a85bb3a0
+ error = 0x0
+ use_stored_config = <optimized out>
+ method = META_MONITORS_CONFIG_METHOD_PERSISTENT
+ fallback_method = META_MONITORS_CONFIG_METHOD_TEMPORARY
#9 0x000074fe9ae768df in g_cclosure_marshal_VOID__BOOLEANv
(closure=<optimized out>, return_value=<optimized out>, instance=<optimized
out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized
out>, param_types=0x63e8a7972a60) at ../../../gobject/gmarshal.c:272
- cc = <optimized out>
- data1 = <optimized out>
- data2 = <optimized out>
- callback = <optimized out>
- arg0 = 0
- args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area =
0x7ffdf4b7fa00, reg_save_area = 0x7ffdf4b7f940}}
+ cc = <optimized out>
+ data1 = <optimized out>
+ data2 = <optimized out>
+ callback = <optimized out>
+ arg0 = 0
+ args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area =
0x7ffdf4b7fa00, reg_save_area = 0x7ffdf4b7f940}}
#10 0x000074fe9ae98f09 in _g_closure_invoke_va (closure=0x63e8a7d92520,
return_value=0x0, instance=0x63e8a7a89e00, args=0x7ffdf4b7f920, n_params=1,
param_types=0x63e8a7972a60) at ../../../gobject/gclosure.c:980
- marshal = <optimized out>
- marshal_data = <optimized out>
- in_marshal = 0
- reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0,
n_guards = 1, n_fnotifiers = 0, n_inotifiers = 2, in_inotify = 0, floating = 0,
derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2,
meta_marshal_nouse = 0, n_guards = 1, n_fnotifiers = 0, n_inotifiers = 2,
in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid =
0, marshal = 0x0, data = 0x0, notifiers = 0x0}, atomic_int = 1114114}
- real_closure = 0x63e8a7d92500
- __func__ = <optimized out>
- _g_boolean_var_49 = <optimized out>
+ marshal = <optimized out>
+ marshal_data = <optimized out>
+ in_marshal = 0
+ reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0,
n_guards = 1, n_fnotifiers = 0, n_inotifiers = 2, in_inotify = 0, floating = 0,
derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2,
meta_marshal_nouse = 0, n_guards = 1, n_fnotifiers = 0, n_inotifiers = 2,
in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid =
0, marshal = 0x0, data = 0x0, notifiers = 0x0}, atomic_int = 1114114}
+ real_closure = 0x63e8a7d92500
+ __func__ = <optimized out>
+ _g_boolean_var_49 = <optimized out>
#11 signal_emit_valist_unlocked (instance=instance@entry=0x63e8a7a89e00,
signal_id=signal_id@entry=37, detail=detail@entry=0,
var_args=var_args@entry=0x7ffdf4b7f920) at ../../../gobject/gsignal.c:3439
- return_accu = 0x0
- accu = {g_type = 0, 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}}}
- emission = {next = 0x7ffdf4b7fb90, instance = 0x63e8a7a89e00, ihint =
{signal_id = 37, detail = 0, run_type = (G_SIGNAL_RUN_FIRST |
G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type =
109850896469744}
- instance_type = <optimized out>
- emission_return = {g_type = 0, 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 = 4
- static_scope = 0
- fastpath_handler = <optimized out>
- closure = <optimized out>
- run_type = <optimized out>
- hlist = <optimized out>
- l = <optimized out>
- fastpath = <optimized out>
- instance_and_params = <optimized out>
- param_values = <optimized out>
- node = <optimized out>
- i = <optimized out>
- node_copy = {signal_id = <optimized out>, itype = <optimized out>,
name = <optimized out>, destroyed = <optimized out>, flags = <optimized out>,
n_params = 1, single_va_closure_is_valid = <optimized out>,
single_va_closure_is_after = <optimized out>, param_types = <optimized out>,
return_type = <optimized out>, class_closure_bsa = <optimized out>, accumulator
= <optimized out>, c_marshaller = <optimized out>, va_marshaller = <optimized
out>, emission_hooks = <optimized out>, single_va_closure = <optimized out>}
- __func__ = "signal_emit_valist_unlocked"
+ return_accu = 0x0
+ accu = {g_type = 0, 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}}}
+ emission = {next = 0x7ffdf4b7fb90, instance = 0x63e8a7a89e00, ihint =
{signal_id = 37, detail = 0, run_type = (G_SIGNAL_RUN_FIRST |
G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type =
109850896469744}
+ instance_type = <optimized out>
+ emission_return = {g_type = 0, 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 = 4
+ static_scope = 0
+ fastpath_handler = <optimized out>
+ closure = <optimized out>
+ run_type = <optimized out>
+ hlist = <optimized out>
+ l = <optimized out>
+ fastpath = <optimized out>
+ instance_and_params = <optimized out>
+ param_values = <optimized out>
+ node = <optimized out>
+ i = <optimized out>
+ node_copy = {signal_id = <optimized out>, itype = <optimized out>,
name = <optimized out>, destroyed = <optimized out>, flags = <optimized out>,
n_params = 1, single_va_closure_is_valid = <optimized out>,
single_va_closure_is_after = <optimized out>, param_types = <optimized out>,
return_type = <optimized out>, class_closure_bsa = <optimized out>, accumulator
= <optimized out>, c_marshaller = <optimized out>, va_marshaller = <optimized
out>, emission_hooks = <optimized out>, single_va_closure = <optimized out>}
+ __func__ = "signal_emit_valist_unlocked"
#12 0x000074fe9ae99008 in g_signal_emit_valist (instance=0x63e8a7a89e00,
signal_id=37, detail=0, var_args=var_args@entry=0x7ffdf4b7f920) at
../../../gobject/gsignal.c:3278
No locals.
#13 0x000074fe9ae990c3 in g_signal_emit
(instance=instance@entry=0x63e8a7a89e00, signal_id=<optimized out>,
detail=detail@entry=0) at ../../../gobject/gsignal.c:3598
- var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area =
0x7ffdf4b7fa00, reg_save_area = 0x7ffdf4b7f940}}
+ var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area =
0x7ffdf4b7fa00, reg_save_area = 0x7ffdf4b7f940}}
#14 0x000074fe9a29317c in logind_properties_changed (proxy=<optimized out>,
changed_properties=0x74fe840218b0, invalidated_properties=<optimized out>,
user_data=0x63e8a7a89e00) at ../src/backends/meta-backend.c:734
- lid_is_closed = 0
- backend = 0x63e8a7a89e00
- priv = 0x63e8a7a89cc0
- v = 0x63e8ab88a030
- reset_idle_time = 0
+ lid_is_closed = 0
+ backend = 0x63e8a7a89e00
+ priv = 0x63e8a7a89cc0
+ v = 0x63e8ab88a030
+ reset_idle_time = 0
#15 0x000074fe9ae785dc in g_closure_invoke (closure=0x63e8a85a14b0,
return_value=0x0, n_param_values=3, param_values=0x7ffdf4b7fc50,
invocation_hint=0x7ffdf4b7fba0) at ../../../gobject/gclosure.c:916
- marshal = 0x74fe9a8a7cc0 <_g_cclosure_marshal_VOID__VARIANT_BOXED>
- marshal_data = 0x0
- in_marshal = 0
- reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0,
n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0,
derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2,
meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0,
in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid =
0, marshal = 0x0, data = 0x0, notifiers = 0x0}, atomic_int = 2}
- real_closure = 0x63e8a85a1490
- __func__ = "g_closure_invoke"
+ marshal = 0x74fe9a8a7cc0 <_g_cclosure_marshal_VOID__VARIANT_BOXED>
+ marshal_data = 0x0
+ in_marshal = 0
+ reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0,
n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0, in_inotify = 0, floating = 0,
derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2,
meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 0, n_inotifiers = 0,
in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid =
0, marshal = 0x0, data = 0x0, notifiers = 0x0}, atomic_int = 2}
+ real_closure = 0x63e8a85a1490
+ __func__ = "g_closure_invoke"
#16 0x000074fe9ae96e09 in signal_emit_unlocked_R
(node=node@entry=0x7ffdf4b7fd90, detail=detail@entry=0,
instance=instance@entry=0x63e8a8781870,
emission_return=emission_return@entry=0x0,
instance_and_params=instance_and_params@entry=0x7ffdf4b7fc50) at
../../../gobject/gsignal.c:3903
- tmp = <optimized out>
- handler = 0x63e8a866b260
- accumulator = <optimized out>
- emission = {next = 0x0, instance = 0x63e8a8781870, ihint = {signal_id
= 11, detail = 0, run_type = (G_SIGNAL_RUN_FIRST |
G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 4}
- class_closure = <optimized out>
- hlist = <optimized out>
- handler_list = 0x63e8a866b260
- return_accu = <optimized out>
- accu = {g_type = 0, 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 = <optimized out>
- max_sequential_handler_number = <optimized out>
- return_value_altered = <optimized out>
- n_params = <optimized out>
- EMIT_RESTART = <optimized out>
- __func__ = <optimized out>
+ tmp = <optimized out>
+ handler = 0x63e8a866b260
+ accumulator = <optimized out>
+ emission = {next = 0x0, instance = 0x63e8a8781870, ihint = {signal_id
= 11, detail = 0, run_type = (G_SIGNAL_RUN_FIRST |
G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 4}
+ class_closure = <optimized out>
+ hlist = <optimized out>
+ handler_list = 0x63e8a866b260
+ return_accu = <optimized out>
+ accu = {g_type = 0, 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 = <optimized out>
+ max_sequential_handler_number = <optimized out>
+ return_value_altered = <optimized out>
+ n_params = <optimized out>
+ EMIT_RESTART = <optimized out>
+ __func__ = <optimized out>
#17 0x000074fe9ae98da6 in signal_emit_valist_unlocked
(instance=instance@entry=0x63e8a8781870, signal_id=signal_id@entry=11,
detail=detail@entry=0, var_args=var_args@entry=0x7ffdf4b7fef0) at
../../../gobject/gsignal.c:3535
- instance_and_params = <optimized out>
- param_values = <optimized out>
- node = <optimized out>
- i = <optimized out>
- node_copy = <optimized out>
- __func__ = "signal_emit_valist_unlocked"
+ instance_and_params = <optimized out>
+ param_values = <optimized out>
+ node = <optimized out>
+ i = <optimized out>
+ node_copy = <optimized out>
+ __func__ = "signal_emit_valist_unlocked"
#18 0x000074fe9ae99008 in g_signal_emit_valist (instance=0x63e8a8781870,
signal_id=11, detail=0, var_args=var_args@entry=0x7ffdf4b7fef0) at
../../../gobject/gsignal.c:3278
No locals.
#19 0x000074fe9ae990c3 in g_signal_emit
(instance=instance@entry=0x63e8a8781870, signal_id=<optimized out>,
detail=detail@entry=0) at ../../../gobject/gsignal.c:3598
- var_args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area =
0x7ffdf4b7ffd0, reg_save_area = 0x7ffdf4b7ff10}}
+ var_args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area =
0x7ffdf4b7ffd0, reg_save_area = 0x7ffdf4b7ff10}}
#20 0x000074fe9a9504e1 in on_properties_changed (connection=<optimized out>,
sender_name=<optimized out>, object_path=<optimized out>,
interface_name=<optimized out>, signal_name=<optimized out>,
parameters=<optimized out>, user_data=0x63e8a8774960) at
../../../gio/gdbusproxy.c:1088
- proxy_weak = 0x63e8a8774960
- emit_g_signal = <optimized out>
- proxy = 0x63e8a8781870
- interface_name_for_signal = 0x63e8a8e92fa0
"org.freedesktop.login1.Manager"
- changed_properties = 0x74fe840218b0
- invalidated_properties = 0x74fe84021aa0
- iter = {x = {128636485245104, 1, 1, 0, 140728709152832,
8877931862862203392, 140728709152864, 3579507750, 128636869280640,
140728709152896, 140728709152944, 128636868192169, 128636490071856,
3722884892668912, 109850895266384, 128636490071808}}
- key = 0x74fe84337170 "\367f\353\313\371t"
- value = 0x63e8b192d030
- n = <optimized out>
+ proxy_weak = 0x63e8a8774960
+ emit_g_signal = <optimized out>
+ proxy = 0x63e8a8781870
+ interface_name_for_signal = 0x63e8a8e92fa0
"org.freedesktop.login1.Manager"
+ changed_properties = 0x74fe840218b0
+ invalidated_properties = 0x74fe84021aa0
+ iter = {x = {128636485245104, 1, 1, 0, 140728709152832,
8877931862862203392, 140728709152864, 3579507750, 128636869280640,
140728709152896, 140728709152944, 128636868192169, 128636490071856,
3722884892668912, 109850895266384, 128636490071808}}
+ key = 0x74fe84337170 "\367f\353\313\371t"
+ value = 0x63e8b192d030
+ n = <optimized out>
#21 0x000074fe9a938130 in emit_signal_instance_in_idle_cb
(data=0x74fe84445190) at ../../../gio/gdbusconnection.c:4207
- signal_instance = 0x74fe84445190
- parameters = 0x74fe8400b350
- has_subscription = 1
+ signal_instance = 0x74fe84445190
+ parameters = 0x74fe8400b350
+ has_subscription = 1
#22 0x000074fe9ad6abfb in g_main_dispatch (context=0x63e8a79692b0) at
../../../glib/gmain.c:3565
- user_data = 0x74fe84445190
- callback = 0x74fe9a9380b0 <emit_signal_instance_in_idle_cb>
- gaig_temp = <optimized out>
- gaig_temp = <optimized out>
- cb_data = 0x74fe84335f80
- need_destroy = <optimized out>
- dispatch = 0x74fe9ad67110 <g_idle_dispatch>
- prev_source = 0x0
- was_in_call = 0
- cb_funcs = 0x74fe9ae60380 <g_source_callback_funcs>
- begin_time_nsec = 335456205528525
- source = 0x74fe84225d10
- current = 0x63e8a792e6d0
- i = 2
- __func__ = "g_main_dispatch"
+ user_data = 0x74fe84445190
+ callback = 0x74fe9a9380b0 <emit_signal_instance_in_idle_cb>
+ gaig_temp = <optimized out>
+ gaig_temp = <optimized out>
+ cb_data = 0x74fe84335f80
+ need_destroy = <optimized out>
+ dispatch = 0x74fe9ad67110 <g_idle_dispatch>
+ prev_source = 0x0
+ was_in_call = 0
+ cb_funcs = 0x74fe9ae60380 <g_source_callback_funcs>
+ begin_time_nsec = 335456205528525
+ source = 0x74fe84225d10
+ current = 0x63e8a792e6d0
+ i = 2
+ __func__ = "g_main_dispatch"
-
- See also:
https://errors.ubuntu.com/problem/f49b55e94c950a360b187ce6b70aadc7ef70b188
+ See also:
+ https://errors.ubuntu.com/problem/f49b55e94c950a360b187ce6b70aadc7ef70b188
** Changed in: mutter (Ubuntu Noble)
Status: New => In Progress
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2130619
Title:
Mutter may crash during output/VT changes
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/2130619/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs