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 327751 - segfault in update_cursor on amd64
segfault in update_cursor on amd64
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Backend: X11
2.8.x
Other All
: Normal critical
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2006-01-19 20:56 UTC by Ryan Lovett
Modified: 2006-01-20 07:21 UTC
See Also:
GNOME target: ---
GNOME version: 2.11/2.12



Description Ryan Lovett 2006-01-19 20:56:43 UTC
Steps to reproduce:
1. Install ubuntu breezy on amd64
2. Install gq, libgtk2.0-0-dbg, and libglib2.0-0-dbg
3. Run gq

I cannot reproduce this on an identically configured i386 ubuntu breezy machine.

Stack trace:
localhost:/tmp/gtk+2.0-2.8.6/upstream/tarballs/gtk+-2.8.6/gdk/x11$ gdb gq
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) r
Starting program: /usr/bin/gq
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread 46912553342768 (LWP 12688)]

Program received signal SIGSEGV, Segmentation fault.

Thread 46912553342768 (LWP 12688)

  • #0 update_cursor
    at gdkcursor-x11.c line 435
  • #1 IA__g_hash_table_foreach
    at ghash.c line 563
  • #2 settings_update_cursor_theme
    at gtksettings.c line 1373
  • #3 IA__gtk_settings_get_for_screen
    at gtksettings.c line 434
  • #4 gtk_style_init
    at gtkstyle.c line 427
  • #5 IA__g_type_create_instance
    at gtype.c line 1596
  • #6 g_object_constructor
    at gobject.c line 1011
  • #7 IA__g_object_newv
    at gobject.c line 908
  • #8 IA__g_object_new_valist
    at gobject.c line 951
  • #9 IA__g_object_new
    at gobject.c line 789
  • #10 IA__gtk_widget_get_default_style
    at gtkwidget.c line 5145
  • #11 gtk_widget_init
    at gtkwidget.c line 1709
  • #12 IA__g_type_create_instance
    at gtype.c line 1588
  • #13 g_object_constructor
    at gobject.c line 1011
  • #14 IA__g_object_newv
    at gobject.c line 908
  • #15 IA__g_object_new_valist
    at gobject.c line 951
  • #16 IA__g_object_new
    at gobject.c line 789
  • #17 IA__gtk_window_new
    at gtkwindow.c line 1037
  • #18 ??
  • #19 ??
  • #20 ??
  • #21 __libc_start_main
    from /lib/libc.so.6
  • #22 ??

Other information:
The gq bug in Ubuntu:
https://launchpad.net/distros/ubuntu/+source/gq/+bug/2786
Comment 1 Matthias Clasen 2006-01-19 21:32:37 UTC
Ryan, is the value you are running into there a GdkFont ? 
Does it look meaningful if you do print *(GdkFontPrivate*)value
in gdb ?
Comment 2 Ryan Lovett 2006-01-20 00:17:38 UTC
Thanks for your inquiry. Here's the output from gdb:

(gdb) print *(GdkFontPrivate*)value
$1 = {font = {type = GDK_FONT_FONT, ascent = 12, descent = 3}, ref_count = 1}
Comment 3 Matthias Clasen 2006-01-20 04:41:01 UTC
2006-01-19  Matthias Clasen  <mclasen@redhat.com>

        * gdk/x11/gdkprivate-x11.h (XID_FONT_BIT):
        * gdk/x11/gdkfont-x11.c:
        * gdk/x11/gdkxid.c: Use an unused high bit in the
        XID to mark fonts in the global xid hash table.

        * gdk/x11/gdkcursor-x11.c (update_cursor): Skip fonts
        when iterating over the xid hash table, since calling
        GDK_IS_WINDOW () on an GdkFont can cause a segfault.
        (#327751, Ryan Lovett)

Comment 4 Ryan Lovett 2006-01-20 07:21:13 UTC
Thanks Matthias!