Copy & paste from https://bugzilla.redhat.com/show_bug.cgi?id=917292 Description of problem: The plugin crashes when I add a new layout and switch to it before exiting the configuration dialog. Version-Release number of selected component (if applicable): xfce4-xkb-plugin-0.5.4.3-2.fc18.x86_64 How reproducible: Every time Steps to Reproduce: 1. Login to XFCE. 2. Add the keyboard plugin to the panel. 3. Configure the plugin like this: - change layout option: Shift+Caps Lock - keyboard layouts: - US - Romanian (standard) - Romanian - show layout as: text - manage layout: globally 3. Close the configuration dialog. 4. The plugin will work just fine. Switch to the 3rd layout. 5. Configure the plugin again and add the "Italian" keyboard layout, but don't close the configuration dialog ("Keyboard Layouts") yet. 6. Change the layout by pressing Shift+Caps Lock Actual results: The plugin crashes Expected results: No crash Additional info: I'd love to attach a backtrace, but ABRT doesn't seem to work to well today; I think the server is too slow. In the mean time I've installed some debuginfo packages and attached gdb to the running process: (gdb) backtrace #0 __strlen_sse2_pminub () at ../sysdeps/x86_64/multiarch/strlen-sse2-pminub.S:38 #1 0x000000000040be97 in xkb_util_normalize_group_name ( group_name=group_name@entry=0x21 <Address 0x21 out of bounds>) at xkb-util.c:78 #2 0x000000000040bf86 in xkb_cairo_draw_label (cr=cr@entry=0x1b29880, group_name=group_name@entry=0x21 <Address 0x21 out of bounds>, panel_size=24, actual_width=actual_width@entry=31, actual_height=actual_height@entry=24, width=<optimized out>, height=24, variant_markers_count=variant_markers_count@entry=0, textsize=0, fgcolor=...) at xkb-cairo.c:155 #3 0x000000000040c753 in xkb_plugin_layout_image_exposed (widget=widget@entry=0x1b20030, event=<optimized out>, xkb=xkb@entry=0x1b15be0) at xkb-callbacks.c:129 #4 0x0000003d45d4dfac in _gtk_marshal_BOOLEAN__BOXED (closure=0x1b1fa00, return_value=0x7fff1dcab260, n_param_values=<optimized out>, param_values=0x7fff1dcab310, invocation_hint=<optimized out>, marshal_data=<optimized out>) at gtkmarshalers.c:86 #5 0x0000003414a0f910 in g_closure_invoke (closure=0x1b1fa00, return_value=return_value@entry=0x7fff1dcab260, n_param_values=2, param_values=param_values@entry=0x7fff1dcab310, invocation_hint=invocation_hint@entry=0x7fff1dcab2b0) at gclosure.c:777 #6 0x0000003414a20d08 in signal_emit_unlocked_R (node=node@entry=0x1ad2740, detail=detail@entry=0, instance=instance@entry=0x1b20030, emission_return=emission_return@entry=0x7fff1dcab3e0, instance_and_params=instance_and_params@entry=0x7fff1dcab310) at gsignal.c:3551 #7 0x0000003414a288c7 in g_signal_emit_valist (instance=0x1b20030, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff1dcab568) ---Type <return> to continue, or q <return> to quit--- at gsignal.c:3310 #8 0x0000003414a28de2 in g_signal_emit (instance=instance@entry=0x1b20030, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3356 #9 0x0000003d45e81b5e in gtk_widget_event_internal (widget=widget@entry=0x1b20030, event=event@entry=0x1d3ae70) at gtkwidget.c:5017 #10 0x0000003d45e81e21 in IA__gtk_widget_send_expose (widget=widget@entry=0x1b20030, event=event@entry=0x1d3ae70) at gtkwidget.c:4846 #11 0x0000003d45cc28f8 in IA__gtk_container_propagate_expose (container=<optimized out>, child=0x1b20030, event=0x1cb8a00) at gtkcontainer.c:2757 #12 0x0000003d45cc12bf in gtk_container_expose (widget=0x1b1a840, event=0x1cb8a00) at gtkcontainer.c:2661 #13 0x0000003d45c90405 in gtk_button_expose (event=0x1cb8a00, widget=0x1b1a840) at gtkbutton.c:1582 #14 gtk_button_expose (widget=widget@entry=0x1b1a840, event=0x1cb8a00) at gtkbutton.c:1570 #15 0x0000003d45d4dfac in _gtk_marshal_BOOLEAN__BOXED (closure=0x1ad26f0, return_value=0x7fff1dcab870, n_param_values=<optimized out>, param_values=0x7fff1dcab920, invocation_hint=<optimized out>, marshal_data=<optimized out>) at gtkmarshalers.c:86 #16 0x0000003414a0f84e in g_closure_invoke (closure=closure@entry=0x1ad26f0, return_value=return_value@entry=0x7fff1dcab870, n_param_values=2, param_values=param_values@entry=0x7fff1dcab920, invocation_hint=invocation_hint@entry=0x7fff1dcab8c0) at gclosure.c:777 #17 0x0000003414a20a80 in signal_emit_unlocked_R (node=node@entry=0x1ad2740, detail=detail@entry=0, instance=instance@entry=0x1b1a840, emission_return=emission_return@entry=0x7fff1dcab9f0, ---Type <return> to continue, or q <return> to quit--- instance_and_params=instance_and_params@entry=0x7fff1dcab920) at gsignal.c:3589 #18 0x0000003414a288c7 in g_signal_emit_valist (instance=0x1b1a840, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff1dcabb78) at gsignal.c:3310 #19 0x0000003414a28de2 in g_signal_emit (instance=instance@entry=0x1b1a840, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3356 #20 0x0000003d45e81b5e in gtk_widget_event_internal (widget=widget@entry=0x1b1a840, event=event@entry=0x1cb8a00) at gtkwidget.c:5017 #21 0x0000003d45e81e21 in IA__gtk_widget_send_expose (widget=widget@entry=0x1b1a840, event=event@entry=0x1cb8a00) at gtkwidget.c:4846 #22 0x0000003d45cc28f8 in IA__gtk_container_propagate_expose (container=<optimized out>, child=0x1b1a840, event=0x1cb88b0) at gtkcontainer.c:2757 #23 0x0000003d45cc12bf in gtk_container_expose (widget=0x1b12050, event=0x1cb88b0) at gtkcontainer.c:2661 #24 0x0000003d45cdaf8c in gtk_event_box_expose (event=0x1cb88b0, widget=0x1b12050) at gtkeventbox.c:568 #25 gtk_event_box_expose (widget=widget@entry=0x1b12050, event=0x1cb88b0) at gtkeventbox.c:560 #26 0x0000003d45d4dfac in _gtk_marshal_BOOLEAN__BOXED (closure=0x1ad26f0, return_value=0x7fff1dcabea0, n_param_values=<optimized out>, param_values=0x7fff1dcabf50, invocation_hint=<optimized out>, marshal_data=<optimized out>) at gtkmarshalers.c:86 #27 0x0000003414a0f84e in g_closure_invoke (closure=closure@entry=0x1ad26f0, return_value=return_value@entry=0x7fff1dcabea0, n_param_values=2, param_values=param_values@entry=0x7fff1dcabf50, ---Type <return> to continue, or q <return> to quit--- invocation_hint=invocation_hint@entry=0x7fff1dcabef0) at gclosure.c:777 #28 0x0000003414a20a80 in signal_emit_unlocked_R (node=node@entry=0x1ad2740, detail=detail@entry=0, instance=instance@entry=0x1b12050, emission_return=emission_return@entry=0x7fff1dcac020, instance_and_params=instance_and_params@entry=0x7fff1dcabf50) at gsignal.c:3589 #29 0x0000003414a288c7 in g_signal_emit_valist (instance=0x1b12050, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff1dcac1a8) at gsignal.c:3310 #30 0x0000003414a28de2 in g_signal_emit (instance=instance@entry=0x1b12050, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3356 #31 0x0000003d45e81b5e in gtk_widget_event_internal (widget=widget@entry=0x1b12050, event=event@entry=0x1cb88b0) at gtkwidget.c:5017 #32 0x0000003d45e81e21 in IA__gtk_widget_send_expose (widget=widget@entry=0x1b12050, event=event@entry=0x1cb88b0) at gtkwidget.c:4846 #33 0x0000003d45cc28f8 in IA__gtk_container_propagate_expose (container=<optimized out>, child=0x1b12050, event=0x7fff1dcac920) at gtkcontainer.c:2757 #34 0x0000003d45cc12bf in gtk_container_expose (widget=0x1adf0a0, event=0x7fff1dcac920) at gtkcontainer.c:2661 #35 0x0000003d45d4dfac in _gtk_marshal_BOOLEAN__BOXED (closure=0x1ad26f0, return_value=0x7fff1dcac480, n_param_values=<optimized out>, param_values=0x7fff1dcac530, invocation_hint=<optimized out>, marshal_data=<optimized out>) at gtkmarshalers.c:86 #36 0x0000003414a0f910 in g_closure_invoke (closure=closure@entry=0x1ad26f0, return_value=return_value@entry=0x7fff1dcac480, n_param_values=2, param_values=param_values@entry=0x7fff1dcac530, ---Type <return> to continue, or q <return> to quit--- invocation_hint=invocation_hint@entry=0x7fff1dcac4d0) at gclosure.c:777 #37 0x0000003414a20a80 in signal_emit_unlocked_R (node=node@entry=0x1ad2740, detail=detail@entry=0, instance=instance@entry=0x1adf0a0, emission_return=emission_return@entry=0x7fff1dcac600, instance_and_params=instance_and_params@entry=0x7fff1dcac530) at gsignal.c:3589 #38 0x0000003414a288c7 in g_signal_emit_valist (instance=0x1adf0a0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff1dcac788) at gsignal.c:3310 #39 0x0000003414a28de2 in g_signal_emit (instance=instance@entry=0x1adf0a0, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3356 #40 0x0000003d45e81b5e in gtk_widget_event_internal (widget=widget@entry=0x1adf0a0, event=event@entry=0x7fff1dcac920) at gtkwidget.c:5017 #41 0x0000003d45e81e21 in IA__gtk_widget_send_expose (widget=widget@entry=0x1adf0a0, event=event@entry=0x7fff1dcac920) at gtkwidget.c:4846 #42 0x0000003d45d4c3f0 in IA__gtk_main_do_event (event=0x7fff1dcac920) at gtkmain.c:1610 #43 0x0000003d4684552c in _gdk_window_process_updates_recurse ( window=window@entry=0x1aca480, expose_region=expose_region@entry=0x7fe8f4007990) at gdkwindow.c:5429 #44 0x0000003d4687d555 in _gdk_windowing_window_process_updates_recurse ( window=window@entry=0x1aca480, region=region@entry=0x7fe8f4007990) at gdkwindow-x11.c:5643 #45 0x0000003d468400a7 in gdk_window_process_updates_internal (window=0x1aca480) at gdkwindow.c:5588 #46 0x0000003d46842428 in IA__gdk_window_process_all_updates () at gdkwindow.c:5696 #47 0x0000003d46842489 in gdk_window_update_idle (data=<optimized out>) ---Type <return> to continue, or q <return> to quit--- at gdkwindow.c:5322 #48 0x0000003d4681ebb7 in gdk_threads_dispatch (data=0x1c41f40) at gdk.c:512 #49 0x0000003414247a55 in g_main_dispatch (context=0x1accd30) at gmain.c:2715 #50 g_main_context_dispatch (context=context@entry=0x1accd30) at gmain.c:3219 #51 0x0000003414247d88 in g_main_context_iterate (context=0x1accd30, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3290 #52 0x0000003414248182 in g_main_loop_run (loop=0x1b32880) at gmain.c:3484 #53 0x0000003d45d4b077 in IA__gtk_main () at gtkmain.c:1257 #54 0x0000000000407270 in main (argc=8, argv=0x7fff1dcacd18) at xfce4-xkb-plugin.c:85
This seems to be fixed in 0.5.6.