Created attachment 2767 backtrace of the crash Forwarded from https://bugzilla.redhat.com/show_bug.cgi?id=547553 Comment: I don't know what the exact conditions need to be, but I was simply switching language by clicking the icon. As it crashed, the language became locked in for all apps (setting is to change language per application) Attached file: backtrace cmdline: /usr/libexec/xfce4/panel-plugins/xfce4-xkb-plugin socket_id 31457325 name xkb-plugin id 12604068180 display_name Keyboard Layouts size 50 screen_position 11 component: xfce4-xkb-plugin executable: /usr/libexec/xfce4/panel-plugins/xfce4-xkb-plugin kernel: 2.6.31.6-166.fc12.i686 package: xfce4-xkb-plugin-0.5.3.3-1.fc12 rating: 4 reason: Process was terminated by signal 6 There also is a coredump available at https://bugzilla.redhat.com/attachment.cgi?id=381869 (3,77 MB)
*** Bug 6394 has been marked as a duplicate of this bug. ***
There's a g_assert (group_name != NULL) in xkb_util_get_flag_filename(), which will terminate the program (with a SIGABRT) if group_name is NULL. Here, I can "reliably" get it NULL if I try to remove the current active layout for the plugin configure dialog. I think this happens when the plugin tries to redraw its flag area for the active flag that has just been removed. Since it's going to be removed, I'm not sure it's useful to redraw the flag, so I put a work around at the beginning of xkb_cairo_draw_flag(): @@ -80,6 +80,7 @@ GdkColor fgcolor) { g_assert (cr != NULL); + g_return_if_fail (group_name != NULL); gchar *filename; RsvgHandle *handle; This way it won't reach the g_assert()…
Fixed in git master branch.