After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 328644 - Freeze when adding menu to panel from Ubuntu "main menu" icon
Freeze when adding menu to panel from Ubuntu "main menu" icon
Status: RESOLVED FIXED
Product: gnome-menus
Classification: Core
Component: libgnome-menu
2.12.x
Other Linux
: High critical
: ---
Assigned To: gnome-menus dummy account
gnome-menus dummy account
Depends on:
Blocks:
 
 
Reported: 2006-01-25 21:40 UTC by Sebastien Bacher
Modified: 2006-03-31 18:24 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Sebastien Bacher 2006-01-25 21:40:26 UTC
This bug has been opened on https://launchpad.net/distros/ubuntu/+source/gnome-panel/+bug/28493
I'm using Ubuntu Breezy 64-bit, with backports enabled. If you are just browsing these bug reports and are new to Linux, please DO NOT follow these directions! They cause a complete desktop freeze, and a machine reboot will not recover your desktop!

To reproduce:
(the problem happens every time for me)
Create a new user account, log out then log in as the new user (this is simply to recreate the default Ubuntu settings).
Right-click near the middle of the top panel and choose "Add to panel...". Choose "Main Menu" with the Ubuntu logo (NOT the "Menu Bar" next to it) and add it.
Click on the newly-added icon on your panel, go to System -> Administration and right-click on "Add Applications".
Go to "Entire menu" and choose "Add this as menu to panel".
My desktop immediately freezes at this point.

Symptoms:
Desktop becomes unresponsive to any mouse-clicks (although the mouse-cursor still moves about). After rebooting the system and logging in, the desktop shows blank grey bars at top and bottom, where the panels would have been drawn, and an endless series of error dialogs is shown. The "top" command shows that gnome-panel is consuming 99% CPU, so it is evidently stuck in an infinite loop.

The only way that I know how to recover the desktop is to go to "init 1". Then "cd" to /home/<user>/.gconf/apps/panel/objects
In that directory, there are lots of "object_NN" directories. Find the one that was most recently created (e.g. with "ls -lt") and then delete it. That procedure cures the problem for me.
...
This problem appears to be specific to the "Main Menu" panel item, and doesn't seem to happen with the "Menu Bar" item which is used by default and looks the same but with the "Applications Places System" text showing.
...
> I've put debug packages on http://people.ubuntu.com/~seb128/debug-pkgs/gnome-menus-amd64, if you could get a backtrace with them installed that would be nice
...
Those packages did help me get better backtraces. Here are a few, they do look very similar to each other. These were taken at the point of failure, whilst the process was spinning (i.e. I attached 'gdb' to the running process, then triggered the bug).

Hope this helps,
Lambros

Program received signal SIGINT, Interrupt.

Thread 46912585392912 (LWP 10345)

  • #0 gmenu_tree_item_get_type
    at gmenu-tree.c line 898
  • #2 gmenu_tree_get_directory_from_path
    at gmenu-tree.c line 807
  • #3 panel_menu_button_get_icon
    at panel-menu-button.c line 726
  • #4 panel_menu_button_set_icon
    at panel-menu-button.c line 757
  • #5 panel_menu_button_parent_set
    at panel-menu-button.c line 313
  • #6 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #8 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #11 gtk_fixed_put
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 panel_applet_load_idle_handler
    at applet.c line 860
  • #16 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #17 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #18 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #0 gmenu_tree_item_get_type
    at gmenu-tree.c line 897
  • #1 find_path
    at gmenu-tree.c line 770
  • #2 gmenu_tree_get_directory_from_path
    at gmenu-tree.c line 807
  • #3 panel_menu_button_get_icon
    at panel-menu-button.c line 726
  • #4 panel_menu_button_set_icon
    at panel-menu-button.c line 757
  • #5 panel_menu_button_parent_set
    at panel-menu-button.c line 313
  • #6 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #8 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #11 gtk_fixed_put
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 panel_applet_load_idle_handler
    at applet.c line 860
  • #16 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #17 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #18 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #0 gmenu_tree_item_get_type
    at gmenu-tree.c line 898
  • #2 gmenu_tree_get_directory_from_path
    at gmenu-tree.c line 807
  • #3 panel_menu_button_get_icon
    at panel-menu-button.c line 726
  • #4 panel_menu_button_set_icon
    at panel-menu-button.c line 757
  • #5 panel_menu_button_parent_set
    at panel-menu-button.c line 313
  • #6 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #8 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #11 gtk_fixed_put
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 panel_applet_load_idle_handler
    at applet.c line 860
  • #16 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #17 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #18 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #0 find_path
    at gmenu-tree.c line 770
  • #1 gmenu_tree_get_directory_from_path
    at gmenu-tree.c line 807
  • #2 panel_menu_button_get_icon
    at panel-menu-button.c line 726
  • #3 panel_menu_button_set_icon
    at panel-menu-button.c line 757
  • #4 panel_menu_button_parent_set
    at panel-menu-button.c line 313
  • #5 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #7 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #8 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #10 gtk_fixed_put
    from /usr/lib/libgtk-x11-2.0.so.0
  • #14 panel_applet_load_idle_handler
    at applet.c line 860
  • #15 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #16 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #17 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #0 gmenu_tree_item_get_type
    at gmenu-tree.c line 898
  • #2 gmenu_tree_get_directory_from_path
    at gmenu-tree.c line 807
  • #3 panel_menu_button_get_icon
    at panel-menu-button.c line 726
  • #4 panel_menu_button_set_icon
    at panel-menu-button.c line 757
  • #5 panel_menu_button_parent_set
    at panel-menu-button.c line 313
  • #6 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #8 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #11 gtk_fixed_put
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 panel_applet_load_idle_handler
    at applet.c line 860
  • #16 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #17 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #18 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0

Comment 1 Mark McLoughlin 2006-03-31 18:24:02 UTC
2006-03-31  Mark McLoughlin  <mark@skynet.ie>

        Fix infinite loop - bug #328644

        * libmenu/gmenu-tree.c: (find_path): increment the
        iterator before continuing.