** 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.
+ We will keep monitoring errors.ubuntu.com for crash reports after this fix.
+ Ubuntu 24.04 was only ever affected in noble-proposed.
  
  [ 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
  #1  0x000074fe9a2c147b in meta_output_get_privacy_screen_state 
(output=0x63e8ab7f4b40) at ../src/backends/meta-output.c:455
          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>
  #3  meta_monitor_set_privacy_screen_enabled (monitor=0x63e8ac47f950, 
enabled=0, error=0x7ffdf4b7f4d0) at ../src/backends/meta-monitor.c:2682
          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
  #5  0x000074fe9a2c6a8d in meta_monitor_manager_rebuild 
(manager=0x63e8a7d86cb0, config=0x63e8a85bb3a0) at 
../src/backends/meta-monitor-manager.c:4299
          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
  #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>
  #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
  #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}}
  #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>
  #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"
  #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}}
  #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
  #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"
  #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>
  #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"
  #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}}
  #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>
  #21 0x000074fe9a938130 in emit_signal_instance_in_idle_cb 
(data=0x74fe84445190) at ../../../gio/gdbusconnection.c:4207
          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"
  
  See also:
  https://errors.ubuntu.com/problem/f49b55e94c950a360b187ce6b70aadc7ef70b188

-- 
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

Reply via email to