Building with Clang `-fvisibility=hidden` causes GNOME Disks to crash when changing LUKS passphrase
I'm using Chimera Linux (which builds software with Clang) and gnome-disk-utility
45.1.
If using GNOME Disks compiled with the Clang flag -fvisibility=hidden
, then trying to change a LUKS partition's passphrase as seen in this screenshot (by selecting a LUKS partition, pressing on the "Additional partition options" button with the gear icon, and pressing on "Change passphrase..."):
causes GNOME disks to crash with the following output:
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.598: Error building template class 'GduChangePassphraseDialog' for an instance of type 'GduChangePassphraseDialog': .:133:1 Invalid object type 'GduPasswordStrengthWidget'
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.600: gtk_entry_get_text: assertion 'GTK_IS_ENTRY (entry)' failed
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.600: gtk_entry_get_text: assertion 'GTK_IS_ENTRY (entry)' failed
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.600: gtk_entry_get_text: assertion 'GTK_IS_ENTRY (entry)' failed
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.600: gtk_entry_set_icon_from_icon_name: assertion 'GTK_IS_ENTRY (entry)' failed
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.600: gtk_entry_set_icon_tooltip_text: assertion 'GTK_IS_ENTRY (entry)' failed
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.600: gtk_entry_set_icon_from_icon_name: assertion 'GTK_IS_ENTRY (entry)' failed
(gnome-disks:7716): Gtk-CRITICAL **: 11:04:23.600: gtk_entry_set_icon_tooltip_text: assertion 'GTK_IS_ENTRY (entry)' failed
(gnome-disks:7716): GNOME-Disks-CRITICAL **: 11:04:23.600: gdu_password_strength_widget_set_password: assertion 'GDU_IS_PASSWORD_STRENGTH_WIDGET (widget)' failed
fish: Job 1, 'gnome-disks' terminated by signal SIGSEGV (Address boundary error)
As for the segfault, here's the LLDB backtrace:
* thread #1, name = 'gnome-disks', stop reason = signal SIGSEGV: address not mapped to object
* frame #0: 0x00007eeabd0aef40 ld-musl-x86_64.so.1`strlen(s=<unavailable>) at strlen.c:17:29
frame #1: 0x00005cc61bcad2d3 gnome-disks`dialog_passhphrase_changed_cb [inlined] _ZL6strlenPKcU17pass_object_size0(__s=0x0000000000000000, (null)=18446744073709551615) at string.h:249:20
frame #2: 0x00005cc61bcad2cb gnome-disks`dialog_passhphrase_changed_cb(self=0x00007eeab963b310) at gduchangepassphrasedialog.c:70:7
frame #3: 0x00007eeabc9fa312 libgobject-2.0.so.0`g_type_create_instance(type=<unavailable>) at gtype.c:2000:5
frame #4: 0x00007eeabc9de5fd libgobject-2.0.so.0`g_object_new_internal(class=0x00007eeab8418250, params=0x00007ffd4012fac0, n_params=1) at gobject.c:2245:24
frame #5: 0x00007eeabc9de3cc libgobject-2.0.so.0`g_object_new_valist(object_type=139546602836752, first_property_name=<unavailable>, var_args=0x00007ffd4012fcb0) at gobject.c:2584:16
frame #6: 0x00007eeabc9dd7be libgobject-2.0.so.0`g_object_new(object_type=<unavailable>, first_property_name=<unavailable>) at gobject.c:2057:12
frame #7: 0x00005cc61bcacaad gnome-disks`gdu_change_passphrase_dialog_show(window=0x00007eeab840b090, object=0x00007eeabae0f390) at gduchangepassphrasedialog.c:317:10
frame #8: 0x00007eeabc9d5159 libgobject-2.0.so.0`g_closure_invoke(closure=0x00007eeabae437d0, return_value=<unavailable>, n_param_values=2, param_values=0x00007ffd4012ff40, invocation_hint=<unavailable>) at gclosure.c:832:7
frame #9: 0x00007eeabc9f4f69 libgobject-2.0.so.0`signal_emit_unlocked_R(node=0x00007ffd4012ffc0, detail=0, instance=0x00007eeabae42130, emission_return=0x0000000000000000, instance_and_params=0x00007ffd4012ff40) at gsignal.c:3980:8
frame #10: 0x00007eeabc9f3804 libgobject-2.0.so.0`signal_emit_valist_unlocked(instance=0x00007eeabae42130, signal_id=<unavailable>, detail=0, var_args=<unavailable>) at gsignal.c:3612:7
frame #11: 0x00007eeabc9f417f libgobject-2.0.so.0`g_signal_emit [inlined] g_signal_emit_valist(instance=0x00007eeabae42130, signal_id=205, detail=0, var_args=0x00007ffd401301c0) at gsignal.c:3355:7
frame #12: 0x00007eeabc9f415f libgobject-2.0.so.0`g_signal_emit(instance=0x00007eeabae42130, signal_id=205, detail=0) at gsignal.c:3675:3
frame #13: 0x00007eeabcb81174 libgio-2.0.so.0`g_simple_action_activate(action=0x00007eeabae42130, parameter=0x0000000000000000) at gsimpleaction.c:0
frame #14: 0x00007eeabc405cf9 libgtk-3.so.0`gtk_menu_tracker_item_activated + 153
frame #15: 0x00007eeabc400501 libgtk-3.so.0`gtk_popover_item_activate + 113
frame #16: 0x00007eeabc9d5159 libgobject-2.0.so.0`g_closure_invoke(closure=0x00007eeabae40c50, return_value=<unavailable>, n_param_values=1, param_values=0x00007ffd401303e0, invocation_hint=<unavailable>) at gclosure.c:832:7
frame #17: 0x00007eeabc9f4f69 libgobject-2.0.so.0`signal_emit_unlocked_R(node=0x00007ffd40130450, detail=0, instance=0x00007eeab9910930, emission_return=0x0000000000000000, instance_and_params=0x00007ffd401303e0) at gsignal.c:3980:8
frame #18: 0x00007eeabc9f3804 libgobject-2.0.so.0`signal_emit_valist_unlocked(instance=0x00007eeab9910930, signal_id=<unavailable>, detail=0, var_args=<unavailable>) at gsignal.c:3612:7
frame #19: 0x00007eeabc9f417f libgobject-2.0.so.0`g_signal_emit [inlined] g_signal_emit_valist(instance=0x00007eeab9910930, signal_id=303, detail=0, var_args=0x00007ffd40130650) at gsignal.c:3355:7
frame #20: 0x00007eeabc9f415f libgobject-2.0.so.0`g_signal_emit(instance=0x00007eeab9910930, signal_id=303, detail=0) at gsignal.c:3675:3
frame #21: 0x00007eeabc279bec libgtk-3.so.0`gtk_real_button_released + 252
frame #22: 0x00007eeabc9d5159 libgobject-2.0.so.0`g_closure_invoke(closure=0x00007eeabb83ec90, return_value=<unavailable>, n_param_values=1, param_values=0x00007ffd40130850, invocation_hint=<unavailable>) at gclosure.c:832:7
frame #23: 0x00007eeabc9f4d13 libgobject-2.0.so.0`signal_emit_unlocked_R(node=0x00007ffd401308c0, detail=0, instance=0x00007eeab9910930, emission_return=0x0000000000000000, instance_and_params=0x00007ffd40130850) at gsignal.c:3813:7
frame #24: 0x00007eeabc9f3804 libgobject-2.0.so.0`signal_emit_valist_unlocked(instance=0x00007eeab9910930, signal_id=<unavailable>, detail=0, var_args=<unavailable>) at gsignal.c:3612:7
frame #25: 0x00007eeabc9f417f libgobject-2.0.so.0`g_signal_emit [inlined] g_signal_emit_valist(instance=0x00007eeab9910930, signal_id=302, detail=0, var_args=0x00007ffd40130ac0) at gsignal.c:3355:7
frame #26: 0x00007eeabc9f415f libgobject-2.0.so.0`g_signal_emit(instance=0x00007eeab9910930, signal_id=302, detail=0) at gsignal.c:3675:3
frame #27: 0x00007eeabc27a4d3 libgtk-3.so.0`multipress_released_cb + 35
frame #28: 0x00007eeabc2310b1 libgtk-3.so.0`_gtk_marshal_VOID__INT_DOUBLE_DOUBLEv + 225
frame #29: 0x00007eeabc9d53c2 libgobject-2.0.so.0`_g_closure_invoke_va(closure=0x00007eeabae40410, return_value=<unavailable>, instance=0x00007eeabb409d60, args=0x00007ffd40130e10, n_params=<unavailable>, param_types=<unavailable>) at gclosure.c:895:7
frame #30: 0x00007eeabc9f3c40 libgobject-2.0.so.0`signal_emit_valist_unlocked(instance=0x00007eeabb409d60, signal_id=294, detail=<unavailable>, var_args=0x00007ffd40130e10) at gsignal.c:3516:8
frame #31: 0x00007eeabc9f417f libgobject-2.0.so.0`g_signal_emit [inlined] g_signal_emit_valist(instance=0x00007eeabb409d60, signal_id=294, detail=0, var_args=0x00007ffd40130e10) at gsignal.c:3355:7
frame #32: 0x00007eeabc9f415f libgobject-2.0.so.0`g_signal_emit(instance=0x00007eeabb409d60, signal_id=294, detail=0) at gsignal.c:3675:3
frame #33: 0x00007eeabc389f36 libgtk-3.so.0`gtk_gesture_multi_press_end + 134
frame #34: 0x00007eeabc9d9db6 libgobject-2.0.so.0`g_cclosure_marshal_VOID__BOXEDv(closure=0x00007eeabb844870, return_value=<unavailable>, instance=<unavailable>, args=<unavailable>, marshal_data=<unavailable>, n_params=<unavailable>, param_types=0x00007eeaba62b010) at gmarshal.c:1686:3
frame #35: 0x00007eeabc9d53c2 libgobject-2.0.so.0`_g_closure_invoke_va(closure=0x00007eeabb844870, return_value=<unavailable>, instance=0x00007eeabb409d60, args=0x00007ffd40131190, n_params=<unavailable>, param_types=<unavailable>) at gclosure.c:895:7
frame #36: 0x00007eeabc9f3c40 libgobject-2.0.so.0`signal_emit_valist_unlocked(instance=0x00007eeabb409d60, signal_id=286, detail=<unavailable>, var_args=0x00007ffd40131190) at gsignal.c:3516:8
frame #37: 0x00007eeabc9f417f libgobject-2.0.so.0`g_signal_emit [inlined] g_signal_emit_valist(instance=0x00007eeabb409d60, signal_id=286, detail=0, var_args=0x00007ffd40131190) at gsignal.c:3355:7
frame #38: 0x00007eeabc9f415f libgobject-2.0.so.0`g_signal_emit(instance=0x00007eeabb409d60, signal_id=286, detail=0) at gsignal.c:3675:3
frame #39: 0x00007eeabc387af7 libgtk-3.so.0`gtk_gesture_handle_event + 663
frame #40: 0x00007eeabc38bcd7 libgtk-3.so.0`gtk_gesture_single_handle_event + 535
frame #41: 0x00007eeabc340b57 libgtk-3.so.0`gtk_event_controller_handle_event + 151
frame #42: 0x00007eeabc59e0ea libgtk-3.so.0`_gtk_widget_run_controllers.llvm.8398233421600583957 + 138
frame #43: 0x00007eeabc22d542 libgtk-3.so.0`_gtk_marshal_BOOLEAN__BOXEDv + 194
frame #44: 0x00007eeabc9d53c2 libgobject-2.0.so.0`_g_closure_invoke_va(closure=0x00007eeabb804180, return_value=<unavailable>, instance=0x00007eeab9910930, args=0x00007ffd401315d0, n_params=<unavailable>, param_types=<unavailable>) at gclosure.c:895:7
frame #45: 0x00007eeabc9f3554 libgobject-2.0.so.0`signal_emit_valist_unlocked(instance=0x00007eeab9910930, signal_id=94, detail=<unavailable>, var_args=0x00007ffd401315d0) at gsignal.c:3516:8
frame #46: 0x00007eeabc9f417f libgobject-2.0.so.0`g_signal_emit [inlined] g_signal_emit_valist(instance=0x00007eeab9910930, signal_id=94, detail=0, var_args=0x00007ffd401315d0) at gsignal.c:3355:7
frame #47: 0x00007eeabc9f415f libgobject-2.0.so.0`g_signal_emit(instance=0x00007eeab9910930, signal_id=94, detail=0) at gsignal.c:3675:3
frame #48: 0x00007eeabc59de63 libgtk-3.so.0`gtk_widget_event_internal.llvm.8398233421600583957 + 675
frame #49: 0x00007eeabc3e5d7d libgtk-3.so.0`gtk_propagate_event + 445
frame #50: 0x00007eeabc3e56d6 libgtk-3.so.0`gtk_main_do_event + 2262
frame #51: 0x00007eeabc7ccff4 libgdk-3.so.0`gdk_event_source_dispatch + 116
frame #52: 0x00007eeabc91a7b6 libglib-2.0.so.0`g_main_context_dispatch_unlocked at gmain.c:3476:27
frame #53: 0x00007eeabc91a64d libglib-2.0.so.0`g_main_context_dispatch_unlocked(context=0x00007eeabce01210) at gmain.c:4284:7
frame #54: 0x00007eeabc91ad72 libglib-2.0.so.0`g_main_context_iterate_unlocked(context=0x00007eeabce01210, block=<unavailable>, dispatch=1, self=<unavailable>) at gmain.c:4349:5
frame #55: 0x00007eeabc91af8a libglib-2.0.so.0`g_main_context_iteration(context=0x00007eeabce01210, may_block=1) at gmain.c:4414:12
frame #56: 0x00007eeabcb74b7d libgio-2.0.so.0`g_application_run(application=0x00007eeab9500260, argc=1, argv=<unavailable>) at gapplication.c:2577:7
frame #57: 0x00005cc61bccc762 gnome-disks`main(argc=1, argv=0x00007ffd401318c8) at main.c:26:12
frame #58: 0x00007eeabd057b3a ld-musl-x86_64.so.1`libc_start_main_stage2(main=(gnome-disks`main at main.c:16), argc=<unavailable>, argv=0x00007ffd401318c8) at __libc_start_main.c:95:7
This crash doesn't occur when the package is built without -fvisibility=hidden
.