gnome-terminal crashes if you start too many too quickly
@seb128
Submitted by Sébastien Bacher Link to original bug (#318797)
Description
This bug has been opened here: https://bugzilla.ubuntu.com/show_bug.cgi?id=17247
"I was trying to find a reliable way to reproduce bug 17137. It only seems to happen when the window list at the bottom is full. So I decided to run a few gnome-terminals to fill it up.
I often run terminals, so I have put an icon on the top panel to allow me to run them easily. I started with nothing showing in the window list at all and then clicked the gnome-terminal icon on my top panel 4 times quickly - like a double click on the mouse, only 4 of them, really quite fast. Only 3 of the 4 windows I requested appeared, and then I heard a clunking noise and saw a dialog telling me that "The Application "gnome-terminal" has quit unexpectedly. I told it to close, and the 3 windows all disappeared.
This doesn't happen every time I try it, but about 1 in 10 times it does. I compiled gnome-terminal from the sources so I could bring you a stack trace. I waited for gnome-terminal to crash, then attached to it with gdb which the dialog telling me that it had crashed was still displayed.
The processes running at the time looked like this:
UID PID PPID C STIME TTY TIME CMD chris 32763 1 0 17:14 ? 00:00:00 sh -c cd /home/chris/src/gnome-terminal/gnome-terminal-2.12.0/src; ./gnome-terminal chris 32764 32763 0 17:14 ? 00:00:00 ./gnome-terminal chris 340 32764 0 17:14 ? 00:00:00 /usr/lib/libgnomeui-0/gnome_segv gnome-terminal 11 2.12.0
I attached to the process like this: "gdb ./gnome-terminal 32764"
And saw this stack trace:
`#0` 0xffffe410 in __kernel_vsyscall ()
`#1` 0xb72fe4ab in __waitpid_nocancel () from /lib/tls/i686/cmov/libpthread.so.0
`#2` 0xb7f4c508 in libgnomeui_module_info_get () from /usr/lib/libgnomeui-2.so.0
`#3` <signal handler called>
`#4` 0x0805c14c in option_parsing_results_init (argc=0xbfbc4cf8, argv=0x8439468)
at terminal.c:1232
`#5` 0x0805f724 in handle_new_terminal_events () at terminal.c:3661
`#6` 0xb74394e7 in bonobo_marshal_VOID__STRING_BOXED_BOXED () from
/usr/lib/libbonobo-2.so.0
`#7` 0xb733b3a8 in IA__g_closure_invoke (closure=0x8116620, return_value=0x2d,
n_param_values=45, param_values=0x2d, invocation_hint=0x2d)
at gclosure.c:492
`#8` 0xb743a566 in bonobo_closure_invoke_va_list () from /usr/lib/libbonobo-2.so.0
`#9` 0xb743a854 in bonobo_closure_invoke () from /usr/lib/libbonobo-2.so.0
`#10` 0xb7427d2f in bonobo_listener_get_type () from /usr/lib/libbonobo-2.so.0
`#11` 0xb743b40d in _ORBIT_skel_small_Bonobo_Listener_event () from
/usr/lib/libbonobo-2.so.0
`#12` 0xb739f260 in ORBit_POA_setup_root () from /usr/lib/libORBit-2.so.0
`#13` 0xb73a3c4e in ORBit_OAObject_invoke () from /usr/lib/libORBit-2.so.0
`#14` 0xb7390ceb in ORBit_small_invoke_adaptor () from /usr/lib/libORBit-2.so.0
`#15` 0xb739f57c in ORBit_POAObject_post_invoke () from /usr/lib/libORBit-2.so.0
`#16` 0xb739fc1b in ORBit_POAObject_post_invoke () from /usr/lib/libORBit-2.so.0
`#17` 0xb73a2641 in ORBit_c_stub_invoke () from /usr/lib/libORBit-2.so.0
`#18` 0xb73a3ba3 in ORBit_handle_request () from /usr/lib/libORBit-2.so.0
`#19` 0xb738dd10 in giop_connection_handle_input () from /usr/lib/libORBit-2.so.0
`#20` 0xb73aa24d in link_connection_set_max_buffer () from /usr/lib/libORBit-2.so.0
`#21` 0xb73abe23 in link_servers_move_io_T () from /usr/lib/libORBit-2.so.0
`#22` 0xb72964ee in IA__g_main_context_dispatch (context=0x80c2338) at gmain.c:1934
`#23` 0xb72994f6 in g_main_context_iterate (context=0x80c2338, block=1,
dispatch=1, self=0x80be690) at gmain.c:2565
`#24` 0xb72999d8 in IA__g_main_context_iteration (context=0x80c2338, may_block=1)
at gmain.c:2624
`#25` 0xb73a81da in link_main_iteration () from /usr/lib/libORBit-2.so.0
`#26` 0xb738d3b5 in giop_recv_buffer_get () from /usr/lib/libORBit-2.so.0
`#27` 0xb7390a4a in ORBit_small_invoke_stub () from /usr/lib/libORBit-2.so.0
`#28` 0xb7390c1d in ORBit_small_invoke_stub_n () from /usr/lib/libORBit-2.so.0
`#29` 0xb73a2439 in ORBit_c_stub_invoke () from /usr/lib/libORBit-2.so.0
`#30` 0xb6e2c254 in Accessibility_EventListener_notifyEvent () from
/usr/lib/libspi.so.0
`#31` 0xb6ea22d0 in gnome_accessibility_module_shutdown () from
/usr/lib/gtk-2.0/modules/libatk-bridge.so
`#32` 0xb6ea2928 in gnome_accessibility_module_shutdown () from
/usr/lib/gtk-2.0/modules/libatk-bridge.so
`#33` 0xb734990c in signal_emit_unlocked_R (node=0x810c9b0, detail=1367,
instance=0x8467848, emission_return=0x0,
instance_and_params=0xbfbc581c) at gsignal.c:2451
`#34` 0xb734b150 in IA__g_signal_emit_valist (instance=0x8467848, signal_id=137,
detail=1367, var_args=Variable "var_args" is not available.
) at gsignal.c:2244
`#35` 0xb734b4c3 in IA__g_signal_emit (instance=0x2d, signal_id=45, detail=45) at
gsignal.c:2288
`#36` 0xb7945421 in atk_object_initialize () from /usr/lib/libatk-1.0.so.0
`#37` 0xb734727c in IA__g_cclosure_marshal_VOID__PARAM (closure=0xbfbc5a5c,
return_value=0x0, n_param_values=2, param_values=0xbfbc5d0c,
invocation_hint=0xbfbc5c0c, marshal_data=0xb794ed0c) at gmarshal.c:531
`#38` 0xb733ad75 in g_type_class_meta_marshal (closure=0x80aedc0,
return_value=0x2d, n_param_values=45, param_values=0xbfbc5d0c,
invocation_hint=0x2d, marshal_data=0x2d) at gclosure.c:569
`#39` 0xb733b3a8 in IA__g_closure_invoke (closure=0x80aedc0, return_value=0x2d,
n_param_values=45, param_values=0x2d, invocation_hint=0x2d)
at gclosure.c:492
`#40` 0xb7349769 in signal_emit_unlocked_R (node=0x80b69a8, detail=1367,
instance=0x8467848, emission_return=0x0,
instance_and_params=0xbfbc5d0c) at gsignal.c:2415
`#41` 0xb734b150 in IA__g_signal_emit_valist (instance=0x8467848, signal_id=1,
detail=1367, var_args=Variable "var_args" is not available.
) at gsignal.c:2244
`#42` 0xb734b4c3 in IA__g_signal_emit (instance=0x2d, signal_id=45, detail=45) at
gsignal.c:2288
`#43` 0xb733cc5b in g_object_dispatch_properties_changed (object=0x8467848,
n_pspecs=1, pspecs=0xbfbc5f7c) at gobject.c:557
`#44` 0xb733c1ea in g_object_notify_dispatcher (object=0x0, n_pspecs=45,
pspecs=0x2d) at gobject.c:238
`#45` 0xb73400bd in IA__g_object_notify (object=0x8467848,
property_name=0xb794e3cb "accessible-parent") at gobjectnotifyqueue.c:123
`#46` 0xb7944414 in atk_object_set_parent () from /usr/lib/libatk-1.0.so.0
`#47` 0xb6dea429 in gail_toplevel_new () from /usr/lib/gtk-2.0/modules/libgail.so
`#48` 0xb734990c in signal_emit_unlocked_R (node=0x80ed248, detail=0,
instance=0x840eb70, emission_return=0x0,
instance_and_params=0xbfbc623c) at gsignal.c:2451
`#49` 0xb734b150 in IA__g_signal_emit_valist (instance=0x840eb70, signal_id=22,
detail=0, var_args=Variable "var_args" is not available.
) at gsignal.c:2244
`#50` 0xb734b4c3 in IA__g_signal_emit (instance=0x2d, signal_id=45, detail=45) at
gsignal.c:2288
`#51` 0xb7beb0e6 in gtk_widget_show () from /usr/lib/libgtk-x11-2.0.so.0
`#52` 0xb7bf6d18 in gtk_window_present_with_time () from /usr/lib/libgtk-x11-2.0.so.0
`#53` 0xb7bf6d81 in gtk_window_present () from /usr/lib/libgtk-x11-2.0.so.0
`#54` 0x0805d877 in terminal_app_new_terminal (app=0x811c310, profile=0x8132ff0,
window=0x840eb70, force_menubar_state=0,
forced_menubar_state=0, start_fullscreen=0, override_command=0x0,
geometry=0x0, title=0x0,
working_dir=0x840ede0
"/home/chris/src/gnome-terminal/gnome-terminal-2.12.0/src", role=0x0, zoom=1,
startup_id=0x840ee38 "_TIME51880210", display_name=0x840eb50 ":0.0",
screen_number=0) at terminal.c:1980
`#55` 0x0805dd80 in new_terminal_with_options (results=0x840eb20) at terminal.c:1432
`#56` 0x0805f913 in handle_new_terminal_events () at terminal.c:3693
`#57` 0xb74394e7 in bonobo_marshal_VOID__STRING_BOXED_BOXED () from
/usr/lib/libbonobo-2.so.0
`#58` 0xb733b3a8 in IA__g_closure_invoke (closure=0x8116620, return_value=0x2d,
n_param_values=45, param_values=0x2d, invocation_hint=0x2d)
at gclosure.c:492
`#59` 0xb743a566 in bonobo_closure_invoke_va_list () from /usr/lib/libbonobo-2.so.0
`#60` 0xb743a854 in bonobo_closure_invoke () from /usr/lib/libbonobo-2.so.0
`#61` 0xb7427d2f in bonobo_listener_get_type () from /usr/lib/libbonobo-2.so.0
`#62` 0xb743b40d in _ORBIT_skel_small_Bonobo_Listener_event () from
/usr/lib/libbonobo-2.so.0
`#63` 0xb739f260 in ORBit_POA_setup_root () from /usr/lib/libORBit-2.so.0
`#64` 0xb73a3c4e in ORBit_OAObject_invoke () from /usr/lib/libORBit-2.so.0
`#65` 0xb7390ceb in ORBit_small_invoke_adaptor () from /usr/lib/libORBit-2.so.0
`#66` 0xb739f57c in ORBit_POAObject_post_invoke () from /usr/lib/libORBit-2.so.0
`#67` 0xb739fc1b in ORBit_POAObject_post_invoke () from /usr/lib/libORBit-2.so.0
`#68` 0xb73a2641 in ORBit_c_stub_invoke () from /usr/lib/libORBit-2.so.0
`#69` 0xb73a3ba3 in ORBit_handle_request () from /usr/lib/libORBit-2.so.0
`#70` 0xb738dd10 in giop_connection_handle_input () from /usr/lib/libORBit-2.so.0
`#71` 0xb73aa24d in link_connection_set_max_buffer () from /usr/lib/libORBit-2.so.0
`#72` 0xb73abe23 in link_servers_move_io_T () from /usr/lib/libORBit-2.so.0
`#73` 0xb72964ee in IA__g_main_context_dispatch (context=0x80bb3f0) at gmain.c:1934
`#74` 0xb72994f6 in g_main_context_iterate (context=0x80bb3f0, block=1,
dispatch=1, self=0x80be690) at gmain.c:2565
`#75` 0xb72997e3 in IA__g_main_loop_run (loop=0x81ee460) at gmain.c:2769
`#76` 0xb7b00ee5 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
`#77` 0x080600c8 in main (argc=1, argv=0xbfbc6e24) at terminal.c:1770
I notice that no matter how many gnome-terminals you run, there's only one process. Perhaps starting 2 "at the same time" triggers a race condition."
Version: 2.13.x
Resolution: RESOLVED FIXED