GNOME Bugzilla – Bug 770563
gnome-control-center crashes on exit after previewing a keyboard layout
Last modified: 2016-08-30 15:19:06 UTC
1) Open /usr/bin/gnome-control-center in a terminal. 2) go to regional and language. 3) Press on a language in 'input sources'. 4) Notice the keyboard layout in a new window and close that window. 5) Close gnome-control-center. Notice the crash. Starting program: /usr/bin/gnome-control-center [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [New Thread 0x7fffcf570700 (LWP 31681)] [New Thread 0x7fffcdf96700 (LWP 31682)] [New Thread 0x7fffcd795700 (LWP 31683)] [New Thread 0x7fffc6264700 (LWP 31707)] [New Thread 0x7fffc5a63700 (LWP 31708)] [Thread 0x7fffc5a63700 (LWP 31708) exited] [Thread 0x7fffc6264700 (LWP 31707) exited] [Thread 0x7fffcdf96700 (LWP 31682) exited] [Thread 0x7fffcf570700 (LWP 31681) exited] [Thread 0x7ffff7ebb980 (LWP 31677) exited] [Inferior 1 (process 31677) exited normally] (gdb) run Starting program: /usr/bin/gnome-control-center [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [New Thread 0x7fffcf570700 (LWP 31711)] [New Thread 0x7fffcdf96700 (LWP 31712)] [New Thread 0x7fffcd795700 (LWP 31713)] [New Thread 0x7fffc6264700 (LWP 31714)] [New Thread 0x7fffc5a63700 (LWP 31715)] (gkbd-keyboard-display:31740): Gtk-CRITICAL **: gtk_widget_set_allocation: assertion '_gtk_widget_get_visible (widget) || _gtk_widget_is_toplevel (widget)' failed Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. Thread 1 "gnome-control-c" received signal SIGSEGV, Segmentation fault. 0x00007ffff2df1b0d in gtk_widget_set_visible (widget=0x111dc00, visible=0) at gtkwidget.c:8984 8984 gtkwidget.c: No such file or directory. (gdb) bt full
+ Trace 236606
Created attachment 334395 [details] [review] region: Avoid a crash on panel destruction GtkListBox might emit the row-selected signal while being destroyed and our row-selected handler accesses widgets owned by GtkBuilder so, depending on the order on which the builder destroys its objects, we could crash on the signal handler when destroying the builder. Using g_signal_connect_object() avoids this issue by disconnecting us before our finalize() runs.
That fixed my crash. Thank you.
Review of attachment 334395 [details] [review]: Looks good.
Attachment 334395 [details] pushed as bbdcaaa - region: Avoid a crash on panel destruction