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 112425 - Nautilus in infinite error loop
Nautilus in infinite error loop
Status: RESOLVED FIXED
Product: nautilus
Classification: Core
Component: general
2.3.x
Other Solaris
: High normal
: ---
Assigned To: Nautilus Maintainers
Nautilus Maintainers
: 112793 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2003-05-06 18:06 UTC by Peter O'Shea
Modified: 2017-07-02 13:48 UTC
See Also:
GNOME target: ---
GNOME version: 2.3/2.4


Attachments
the "at least it doesn't hang" patch (804 bytes, patch)
2003-05-14 00:53 UTC, Samuel Stringham
none Details | Review

Description Peter O'Shea 2003-05-06 18:06:14 UTC
Nautilus 2.3.1, when run from the command line, produces an infinite number
of the following error messages:

*** attempt to put segment in horiz list twice
*** attempt to put segment in horiz list twice
*** attempt to put segment in horiz list twice
*** attempt to put segment in horiz list twice
*** attempt to put segment in horiz list twice
....etc ad nauseam.

It also takes up nearly 100% of the cpu and a boatload of memory.
Comment 1 Peter O'Shea 2003-05-07 20:45:16 UTC
After exiting and re-entering gnome, nautilus now starts up with only
two of the above error messages.  A home directory window appears, but
the throbber button keeps rotating and the nautilus process goes up to
nearly 100% cpu.

If I run it under gdb, wait until it hangs, ctrl-C and get a
backtrace, this is what I come up with:

^C
Program received signal SIGINT, Interrupt.
0xfece3e48 in gdk_pixbuf_get_width ()
(gdb) bt
  • #0 gdk_pixbuf_get_width
  • #1 nautilus_icon_canvas_item_bounds
  • #2 eel_canvas_item_get_bounds
  • #3 icon_get_bounding_box
  • #4 lay_down_icons_tblr
  • #5 finish_adding_new_icons
  • #6 redo_layout_internal
  • #7 g_cclosure_marshal_VOID__BOXED
  • #8 g_type_class_meta_marshal
  • #9 g_closure_invoke
  • #10 signal_emit_unlocked_R
  • #11 g_signal_emit_valist
  • #12 g_signal_emit
  • #13 gtk_widget_size_allocate
  • #14 gtk_scrolled_window_size_allocate
  • #15 g_cclosure_marshal_VOID__BOXED
  • #16 g_type_class_meta_marshal
  • #17 g_closure_invoke
  • #18 signal_emit_unlocked_R
  • #19 g_signal_emit_valist
  • #20 g_signal_emit
  • #21 gtk_widget_size_allocate
  • #22 gtk_window_size_allocate
  • #23 gtk_plug_size_allocate
  • #24 bonobo_plug_size_allocate
  • #25 g_cclosure_marshal_VOID__BOXED
  • #26 g_type_class_meta_marshal
  • #27 g_closure_invoke
  • #28 signal_emit_unlocked_R
  • #29 g_signal_emit_valist
  • #30 g_signal_emit
  • #31 gtk_widget_size_allocate
  • #32 gtk_window_show
  • #33 gtk_plug_show
  • #34 g_cclosure_marshal_VOID__VOID
  • #35 g_type_class_meta_marshal
  • #36 g_closure_invoke
  • #37 signal_emit_unlocked_R
  • #38 g_signal_emit_valist
  • #39 g_signal_emit
  • #40 gtk_widget_show
  • #41 impl_Bonobo_Control_getWindowId
  • #42 Bonobo_Control_getWindowId
  • #43 bonobo_control_frame_get_remote_window
  • #44 bonobo_socket_realize
  • #45 g_cclosure_marshal_VOID__VOID
  • #46 g_type_class_meta_marshal
  • #47 g_closure_invoke
  • #48 signal_emit_unlocked_R
  • #49 g_signal_emit_valist
  • #50 g_signal_emit
  • #51 gtk_widget_realize
  • #52 gtk_widget_map
  • #53 gtk_bin_forall
  • #54 gtk_container_forall
  • #55 gtk_container_map
  • #56 nautilus_view_frame_map
  • #57 g_cclosure_marshal_VOID__VOID
  • #58 g_type_class_meta_marshal
  • #59 g_closure_invoke
  • #60 signal_emit_unlocked_R
  • #61 g_signal_emit_valist
  • #62 g_signal_emit
  • #63 gtk_widget_map
  • #64 gtk_bin_forall
  • #65 gtk_container_forall
  • #66 gtk_container_map
  • #67 g_cclosure_marshal_VOID__VOID
  • #68 g_type_class_meta_marshal
  • #69 g_closure_invoke
  • #70 signal_emit_unlocked_R
  • #71 g_signal_emit_valist
  • #72 g_signal_emit
  • #73 gtk_widget_map
  • #74 bonobo_dock_forall
  • #75 gtk_container_forall
  • #76 gtk_container_map
  • #77 bonobo_dock_map
  • #78 g_cclosure_marshal_VOID__VOID
  • #79 g_type_class_meta_marshal
  • #80 g_closure_invoke
  • #81 signal_emit_unlocked_R
  • #82 g_signal_emit_valist
  • #83 g_signal_emit
  • #84 gtk_widget_map
  • #85 gtk_box_forall
  • #86 gtk_container_forall
  • #87 gtk_container_map
  • #88 g_cclosure_marshal_VOID__VOID
  • #89 g_type_class_meta_marshal
  • #90 g_closure_invoke
  • #91 signal_emit_unlocked_R
  • #92 g_signal_emit_valist
  • #93 g_signal_emit
  • #94 gtk_widget_map
  • #95 gtk_window_map
  • #96 map
  • #97 g_cclosure_marshal_VOID__VOID
  • #98 g_type_class_meta_marshal
  • #99 g_closure_invoke
  • #100 signal_emit_unlocked_R
  • #101 g_signal_emit_valist
  • #102 g_signal_emit
  • #103 gtk_widget_map
  • #104 gtk_window_show
  • #105 nautilus_window_show
  • #106 g_cclosure_marshal_VOID__VOID
  • #107 g_type_class_meta_marshal
  • #108 g_closure_invoke
  • #109 signal_emit_unlocked_R
  • #110 g_signal_emit_valist
  • #111 g_signal_emit
  • #112 gtk_widget_show
  • #113 g_cclosure_marshal_VOID__VOID
  • #114 g_closure_invoke
  • #115 signal_emit_unlocked_R
  • #116 g_signal_emit_valist
  • #117 g_signal_emit
  • #118 execute_queued_functions
  • #119 g_idle_dispatch
  • #120 g_main_dispatch
  • #121 g_main_context_dispatch
  • #122 g_main_context_iterate
  • #123 g_main_loop_run
  • #124 gtk_main
  • #125 main

Comment 2 Dave Camp 2003-05-07 20:57:55 UTC
might be from the snap-to-grid patch, I'll take a look.
Comment 3 Samuel Stringham 2003-05-13 17:10:09 UTC
*** Bug 112793 has been marked as a duplicate of this bug. ***
Comment 4 Samuel Stringham 2003-05-13 19:05:11 UTC
if, in src/file-manager/fm-desktop-icon-view.c you change line 708 from:
                                                
NAUTILUS_ICON_LAYOUT_T_B_L_R);

to
                                                
NAUTILUS_ICON_LAYOUT_L_R_T_B);

it stops calling lay_down_icons_tblr() which is the function with the
infinite loop in it.  This is just a hack, but it works.  Also, adding
garnome to the CC, since it is in 0.24.2
Comment 5 Samuel Stringham 2003-05-14 00:28:43 UTC
okay, I have some more information.  This seems related to bug 92333 .
  gtk_plug_size_allocate is getting called more than once, in that bug
it happened to be doing it 3 times.  Our bug is calling the
gtk_plug_size_allocate method 4 times.  The third time it calls it the
data is correct, but the fourth (and final) time the height/width of
the window is somehow corrupted.  I am looking harder.
Comment 6 Samuel Stringham 2003-05-14 00:53:15 UTC
Created attachment 16512 [details] [review]
the "at least it doesn't hang" patch
Comment 7 Peter O'Shea 2003-05-14 15:38:32 UTC
Confirmed that applying the patch makes 2.3.1 run without hanging on
my system.  Thanks for the workaround.
Comment 8 Alexander Larsson 2003-06-12 11:29:56 UTC
A similar patch is in cvs already.