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 628216 - libgtk 2.21.6 random segfault with many gdk functions
libgtk 2.21.6 random segfault with many gdk functions
Status: RESOLVED INVALID
Product: gtk+
Classification: Platform
Component: Backend: X11
2.21.x
Other Linux
: Normal normal
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2010-08-28 22:40 UTC by ammonkey
Modified: 2010-09-15 12:53 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description ammonkey 2010-08-28 22:40:10 UTC
Since the move to libgtk 2.21.6 in ubuntu maverick, some applications like nautilus tend to crash segfault randomly. gdb show the segfaults happen on many gdk functions. Here are two differents backtraces for a same segfault happening in differents conditions. 

http://pastebin.com/pue90cRC
http://pastebin.com/SjVsJN90

There are other segfaults that concern some other gdk functions but they are hard to reproduce because of the previous one. 

Downgrading to libgtk 2.21.5 solve theses segfault. The strange thing is that if you previously compiled nautilus with libgtk 2.21.5 even if you update libgtk-2.0 to 2.21.6 then the problem is solved. Maybe this come from some missing headers in 2.21.6. I don't have any clue but this is what i've observed and what the backtraces tend to say. 

This bug may concern some other gtk apps than nautilus, some apps using advanced drawing gdk functions.

It's a critical bug because nautilus is barely usable and even to get a window you have to pray for it to avoid the random crash at launch and after. Just change a theme and nautilus crash / restart. It happens very very often.
Comment 1 Javier Jardón (IRC: jjardon) 2010-08-29 16:25:02 UTC
This is the first backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff57aa036 in IA__gdk_gc_set_rgb_fg_color (gc=0xffffffffe4154160, 
    color=0x7fffffffab00) at /build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c:1328
1328	/build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c: Aucun fichier ou dossier de ce type.
	in /build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c
(gdb) bt
  • #0 IA__gdk_gc_set_rgb_fg_color
    at /build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c line 1328
  • #1 setup_gc_with_fg
    at nautilus-icon-container.c line 8643
  • #2 setup_label_gcs
    at nautilus-icon-container.c line 8692
  • #3 realize
    at nautilus-icon-container.c line 4178
  • #4 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #5 ??
    from /usr/lib/libgobject-2.0.so.0
  • #6 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #7 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #8 IA__gtk_widget_realize
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 3528
  • #9 IA__gtk_widget_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 3402
  • #10 gtk_scrolled_window_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkscrolledwindow.c line 1086
  • #11 gtk_container_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkcontainer.c line 2690
  • #12 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #13 ??
    from /usr/lib/libgobject-2.0.so.0
  • #14 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #15 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #16 IA__gtk_widget_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 3404
  • #17 gtk_box_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkbox.c line 1251
  • #18 gtk_container_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkcontainer.c line 2690
  • #19 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #20 ??
    from /usr/lib/libgobject-2.0.so.0
  • #21 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #22 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #23 IA__gtk_widget_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 3404
  • #24 gtk_box_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkbox.c line 1251
  • #25 gtk_container_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkcontainer.c line 2690
  • #26 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #27 ??
    from /usr/lib/libgobject-2.0.so.0
  • #28 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #29 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #30 IA__gtk_widget_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 3404
  • #31 gtk_notebook_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtknotebook.c line 1747
  • #32 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #33 ??
    from /usr/lib/libgobject-2.0.so.0
  • #34 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #35 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #36 IA__gtk_widget_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 3404
  • #37 gtk_box_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkbox.c line 1251
  • #38 gtk_container_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkcontainer.c line 2690
  • #39 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #40 ??
    from /usr/lib/libgobject-2.0.so.0
  • #41 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #42 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #43 IA__gtk_widget_map
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 3404

Comment 2 Javier Jardón (IRC: jjardon) 2010-08-29 16:30:53 UTC
This is the second one:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff57aa036 in IA__gdk_gc_set_rgb_fg_color (gc=0xffffffffe4009330, 
    color=0x7fffffffcef0) at /build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c:1328
1328	/build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c: Aucun fichier ou dossier de ce type.
	in /build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c
(gdb) bt
  • #0 IA__gdk_gc_set_rgb_fg_color
    at /build/buildd/gtk+2.0-2.21.6/gdk/gdkgc.c line 1328
  • #1 setup_gc_with_fg
    at nautilus-icon-container.c line 8643
  • #2 setup_label_gcs
    at nautilus-icon-container.c line 8692
  • #3 nautilus_icon_container_theme_changed
    at nautilus-icon-container.c line 8907
  • #4 style_set
    at nautilus-icon-container.c line 4235
  • #5 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #6 ??
    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
  • #9 gtk_widget_set_style_internal
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 6961
  • #10 reset_rc_styles_recurse
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkwidget.c line 7171
  • #11 gtk_scrolled_window_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkscrolledwindow.c line 1086
  • #12 gtk_box_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkbox.c line 1251
  • #13 gtk_box_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkbox.c line 1251
  • #14 gtk_box_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkbox.c line 1251
  • #15 gtk_table_forall
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtktable.c line 935
  • #16 gtk_rc_reset_widgets
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkrc.c line 1668
  • #17 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #18 ??
    from /usr/lib/libgobject-2.0.so.0
  • #19 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #20 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #21 ??
    from /usr/lib/libgobject-2.0.so.0
  • #22 ??
    from /usr/lib/libgobject-2.0.so.0
  • #23 g_object_thaw_notify
    from /usr/lib/libgobject-2.0.so.0
  • #24 _gtk_settings_reset_rc_values
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtksettings.c line 2018
  • #25 IA__gtk_rc_reparse_all_for_settings
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkrc.c line 1832
  • #26 gtk_rc_settings_changed
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkrc.c line 682
  • #27 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #28 ??
    from /usr/lib/libgobject-2.0.so.0
  • #29 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #30 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #31 ??
    from /usr/lib/libgobject-2.0.so.0
  • #32 g_object_notify
    from /usr/lib/libgobject-2.0.so.0
  • #33 _gtk_settings_handle_event
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtksettings.c line 1963
  • #34 IA__gtk_main_do_event
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkmain.c line 1480
  • #35 gdk_event_dispatch
    at /build/buildd/gtk+2.0-2.21.6/gdk/x11/gdkevents-x11.c line 2377
  • #36 g_main_context_dispatch
    from /lib/libglib-2.0.so.0
  • #37 ??
    from /lib/libglib-2.0.so.0
  • #38 g_main_loop_run
    from /lib/libglib-2.0.so.0
  • #39 IA__gtk_main
    at /build/buildd/gtk+2.0-2.21.6/gtk/gtkmain.c line 1237
  • #40 main
    at nautilus-main.c line 544

Comment 3 ammonkey 2010-09-13 01:14:27 UTC
same applies for 2.21.7
Still unconfirmed ? it's really not hard to confirm this bug just launch nautilus a few time and you ve got this bug confirmed.
Comment 4 ammonkey 2010-09-15 12:53:59 UTC
seems fixed with vanilla nautilus 2.31.92. Maybe some compil DEPRECATED flags changed. or maybe something else.