Package: xqf
Version: 1.0.4-2

XQF will crash when you try to display screenshots.  What xqf should
do is pop up a 320x240 or so screen that displays the level screenshot
for any map that doesn't have a red dash next to it.  To display it,
press and hold left mouse button on a map name.  It should pop up.

What currently happens is that it crashes.  Sometimes it will crash
the first time you try it.  Other times it will crash the second time
you do it.  The crash isn't always the same traceback.  There are 3
different tracebacks that I have seen.  I think the double free is the
most useful because if you remove that call, you can load any map's
level shot fine.

I edited debian/rules to add --enable-debug and changed the Makefile
so it used -ggdb.  When I run xqf, it will reliably crash when I try
to display the levelscreenshot.

Here is the traceback from that build (built with debuild -uc -us).
I'm posting 3 different tracebacks but only the bt part after the
first.

$ gdb ./xqf core
GNU gdb 6.4.90-debian
Copyright (C) 2006 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 "i486-linux-gnu"...Using host libthread_db
library "/lib/tls/i686/cmov/libthread_db.so.1".


warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libGeoIP.so.1...done.
Loaded symbols for /usr/lib/libGeoIP.so.1
Reading symbols from /usr/lib/libgtk-x11-2.0.so.0...done.
Loaded symbols for /usr/lib/libgtk-x11-2.0.so.0
Reading symbols from /usr/lib/libgdk-x11-2.0.so.0...done.
Loaded symbols for /usr/lib/libgdk-x11-2.0.so.0
Reading symbols from /usr/lib/libatk-1.0.so.0...done.
Loaded symbols for /usr/lib/libatk-1.0.so.0
Reading symbols from /usr/lib/libpangocairo-1.0.so.0...done.
Loaded symbols for /usr/lib/libpangocairo-1.0.so.0
Reading symbols from /usr/lib/libfontconfig.so.1...done.
Loaded symbols for /usr/lib/libfontconfig.so.1
Reading symbols from /usr/lib/libXext.so.6...done.
Loaded symbols for /usr/lib/libXext.so.6
Reading symbols from /usr/lib/libXrender.so.1...done.
Loaded symbols for /usr/lib/libXrender.so.1
Reading symbols from /usr/lib/libXinerama.so.1...done.
Loaded symbols for /usr/lib/libXinerama.so.1
Reading symbols from /usr/lib/libXi.so.6...done.
Loaded symbols for /usr/lib/libXi.so.6
Reading symbols from /usr/lib/libXrandr.so.2...done.
Loaded symbols for /usr/lib/libXrandr.so.2
Reading symbols from /usr/lib/libXcursor.so.1...done.
Loaded symbols for /usr/lib/libXcursor.so.1
Reading symbols from /usr/lib/libXfixes.so.3...done.
Loaded symbols for /usr/lib/libXfixes.so.3
Reading symbols from /usr/lib/libpango-1.0.so.0...done.
Loaded symbols for /usr/lib/libpango-1.0.so.0
Reading symbols from /usr/lib/libcairo.so.2...done.
Loaded symbols for /usr/lib/libcairo.so.2
Reading symbols from /usr/lib/libX11.so.6...done.
Loaded symbols for /usr/lib/libX11.so.6
Reading symbols from /usr/lib/libgdk_pixbuf_xlib-2.0.so.0...done.
Loaded symbols for /usr/lib/libgdk_pixbuf_xlib-2.0.so.0
Reading symbols from /usr/lib/libgdk_pixbuf-2.0.so.0...done.
Loaded symbols for /usr/lib/libgdk_pixbuf-2.0.so.0
Reading symbols from /lib/tls/i686/cmov/libm.so.6...done.
Loaded symbols for /lib/tls/i686/cmov/libm.so.6
Reading symbols from /usr/lib/libgobject-2.0.so.0...done.
Loaded symbols for /usr/lib/libgobject-2.0.so.0
Reading symbols from /usr/lib/libgmodule-2.0.so.0...done.
Loaded symbols for /usr/lib/libgmodule-2.0.so.0
Reading symbols from /lib/tls/i686/cmov/libdl.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libdl.so.2
Reading symbols from /usr/lib/libglib-2.0.so.0...done.
Loaded symbols for /usr/lib/libglib-2.0.so.0
Reading symbols from /usr/lib/libz.so.1...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /lib/tls/i686/cmov/libc.so.6...done.
Loaded symbols for /lib/tls/i686/cmov/libc.so.6
Reading symbols from /usr/lib/libpangoft2-1.0.so.0...done.
Loaded symbols for /usr/lib/libpangoft2-1.0.so.0
Reading symbols from /usr/lib/libfreetype.so.6...done.
Loaded symbols for /usr/lib/libfreetype.so.6
Reading symbols from /usr/lib/libexpat.so.1...done.
Loaded symbols for /usr/lib/libexpat.so.1
Reading symbols from /usr/lib/libXau.so.6...done.
Loaded symbols for /usr/lib/libXau.so.6
Reading symbols from /usr/lib/libpng12.so.0...done.
Loaded symbols for /usr/lib/libpng12.so.0
Reading symbols from /usr/lib/libXdmcp.so.6...done.
Loaded symbols for /usr/lib/libXdmcp.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/tls/i686/cmov/librt.so.1...done.
Loaded symbols for /lib/tls/i686/cmov/librt.so.1
Reading symbols from /lib/tls/i686/cmov/libpthread.so.0...done.
Loaded symbols for /lib/tls/i686/cmov/libpthread.so.0
Reading symbols from /lib/tls/i686/cmov/libnss_compat.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_compat.so.2
Reading symbols from /lib/tls/i686/cmov/libnsl.so.1...done.
Loaded symbols for /lib/tls/i686/cmov/libnsl.so.1
Reading symbols from /lib/tls/i686/cmov/libnss_nis.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_nis.so.2
Reading symbols from /lib/tls/i686/cmov/libnss_files.so.2...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_files.so.2
Reading symbols from /usr/lib/X11/locale/common/xlcUTF8Load.so.2...done.
Loaded symbols for /usr/lib/X11/locale/common/xlcUTF8Load.so.2
Reading symbols from /usr/lib/gconv/ISO8859-1.so...done.
Loaded symbols for /usr/lib/gconv/ISO8859-1.so
Reading symbols from
/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so...done.
Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-png.so
Reading symbols from /usr/lib/pango/1.5.0/modules/pango-basic-fc.so...done.
Loaded symbols for /usr/lib/pango/1.5.0/modules/pango-basic-fc.so
Reading symbols from
/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-xpm.so...done.
Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-xpm.so
Reading symbols from
/usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so...done.
Loaded symbols for /usr/lib/gtk-2.0/2.4.0/loaders/libpixbufloader-jpeg.so
Reading symbols from /usr/lib/libjpeg.so.62...done.
Loaded symbols for /usr/lib/libjpeg.so.62
Core was generated by `./xqf'.
Program terminated with signal 6, Aborted.
#0  0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xa778c821 in raise () from /lib/tls/i686/cmov/libc.so.6
#2  0xa778dfb9 in abort () from /lib/tls/i686/cmov/libc.so.6
#3  0xa77c1c4a in __fsetlocking () from /lib/tls/i686/cmov/libc.so.6
#4  0xa77c94df in mallopt () from /lib/tls/i686/cmov/libc.so.6
#5  0xa77c9582 in free () from /lib/tls/i686/cmov/libc.so.6
#6  0xa78dcbd1 in g_free () from /usr/lib/libglib-2.0.so.0
#7  0x080af3f2 in renderMemToPixbuf (mem=0xa731b008 "ÿØÿà",
len=371468) at memtopixmap.c:116
#8  0x080af41f in renderMemToGtkPixmap (mem=0xa731b008 "ÿØÿà",
len=371468, pix=0xafc08860, mask=0xafc0885c, width=0xafc08868,
height=0xafc08864, brightness=64 '@') at memtopixmap.c:125
#9  0x080a16ac in server_mapshot_preview_popup_show
(imagedata=0xa731b008 "ÿØÿà", len=371468, x=758, y=138) at xqf.c:2072
#10 0x080a1af4 in server_clist_event_callback (widget=0x93a7008,
event=0x93c4408) at xqf.c:2149
#11 0xa7d5b110 in _gtk_marshal_BOOLEAN__BOXED () from
/usr/lib/libgtk-x11-2.0.so.0
#12 0xa794ca2b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#13 0xa795cfcd in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
#14 0xa795e2a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#15 0xa795e679 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#16 0xa7e44b88 in gtk_widget_get_default_style () from
/usr/lib/libgtk-x11-2.0.so.0
#17 0xa7d54a93 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#18 0xa7d55cc7 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#19 0xa7beee3a in _gdk_events_init () from /usr/lib/libgdk-x11-2.0.so.0
#20 0xa78d57b1 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#21 0xa78d8826 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#22 0xa78d8be7 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#23 0xa7d56141 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#24 0x080a4e9b in main (argc=1, argv=0xafc09034) at xqf.c:3945
(gdb) quit

<<another crash>>

Core was generated by `./xqf'.
Program terminated with signal 11, Segmentation fault.
#0  0xa7900967 in g_slice_alloc () from /usr/lib/libglib-2.0.so.0
(gdb) bt
#0  0xa7900967 in g_slice_alloc () from /usr/lib/libglib-2.0.so.0
#1  0xa78e7566 in g_list_prepend () from /usr/lib/libglib-2.0.so.0
#2  0xa7c18d63 in gdk_window_new () from /usr/lib/libgdk-x11-2.0.so.0
#3  0xa7e6e0ae in gtk_window_new () from /usr/lib/libgtk-x11-2.0.so.0
#4  0xa796debb in g_cclosure_marshal_VOID__VOID () from
/usr/lib/libgobject-2.0.so.0
#5  0xa795efe9 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
#6  0xa7960a2b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#7  0xa7971458 in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
#8  0xa79724c9 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#9  0xa7972679 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#10 0xa7e5fae4 in gtk_widget_realize () from /usr/lib/libgtk-x11-2.0.so.0
#11 0xa7e6e6d8 in gtk_window_new () from /usr/lib/libgtk-x11-2.0.so.0
#12 0xa796debb in g_cclosure_marshal_VOID__VOID () from
/usr/lib/libgobject-2.0.so.0
#13 0xa795efe9 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
#14 0xa7960a2b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#15 0xa7971458 in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
#16 0xa79724c9 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#17 0xa7972679 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#18 0xa7e5f1b6 in gtk_widget_show () from /usr/lib/libgtk-x11-2.0.so.0
#19 0x080a18ef in server_mapshot_preview_popup_show
(imagedata=0xa732f008 "ÿØÿà", len=371468, x=960, y=296) at xqf.c:2114
#20 0x080a1af4 in server_clist_event_callback (widget=0x93a7008,
event=0x93c4638) at xqf.c:2149
#21 0xa7d6f110 in _gtk_marshal_BOOLEAN__BOXED () from
/usr/lib/libgtk-x11-2.0.so.0
#22 0xa7960a2b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#23 0xa7970fcd in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
#24 0xa79722a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#25 0xa7972679 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#26 0xa7e58b88 in gtk_widget_get_default_style () from
/usr/lib/libgtk-x11-2.0.so.0
#27 0xa7d68a93 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#28 0xa7d69cc7 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#29 0xa7c02e3a in _gdk_events_init () from /usr/lib/libgdk-x11-2.0.so.0
#30 0xa78e97b1 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#31 0xa78ec826 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#32 0xa78ecbe7 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#33 0xa7d6a141 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#34 0x080a4e9b in main (argc=1, argv=0xaff7a3a4) at xqf.c:3945
(gdb) quit

<<another crash>>

Core was generated by `./xqf'.
Program terminated with signal 11, Segmentation fault.
#0  0xa795d967 in g_slice_alloc () from /usr/lib/libglib-2.0.so.0
(gdb) bt
#0  0xa795d967 in g_slice_alloc () from /usr/lib/libglib-2.0.so.0
#1  0xa7944566 in g_list_prepend () from /usr/lib/libglib-2.0.so.0
#2  0xa7b73fb9 in pango_context_get_font_description () from
/usr/lib/libpango-1.0.so.0
#3  0xa7b74470 in pango_itemize_with_base_dir () from /usr/lib/libpango-1.0.so.0
#4  0xa7b7c500 in pango_layout_iter_get_char_extents () from
/usr/lib/libpango-1.0.so.0
#5  0xa7b7d09b in pango_layout_iter_get_char_extents () from
/usr/lib/libpango-1.0.so.0
#6  0xa7b7e0b3 in pango_layout_get_pixel_extents () from
/usr/lib/libpango-1.0.so.0
#7  0xa7d1e021 in gtk_clist_new () from /usr/lib/libgtk-x11-2.0.so.0
#8  0xa7d1673e in gtk_clist_set_auto_sort () from /usr/lib/libgtk-x11-2.0.so.0
#9  0xa7d1f281 in gtk_clist_new () from /usr/lib/libgtk-x11-2.0.so.0
#10 0xa7dcc110 in _gtk_marshal_BOOLEAN__BOXED () from
/usr/lib/libgtk-x11-2.0.so.0
#11 0xa79bbfe9 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
#12 0xa79bda2b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#13 0xa79ce60f in g_signal_chain_from_overridden () from
/usr/lib/libgobject-2.0.so.0
#14 0xa79cf2a8 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#15 0xa79cf679 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#16 0xa7eb5cc4 in gtk_widget_get_default_style () from
/usr/lib/libgtk-x11-2.0.so.0
#17 0xa7dc6ecf in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#18 0xa7c4ae00 in gdk_window_is_viewable () from /usr/lib/libgdk-x11-2.0.so.0
#19 0xa7c4afaf in gdk_window_process_all_updates () from
/usr/lib/libgdk-x11-2.0.so.0
#20 0xa7c4b035 in gdk_window_process_all_updates () from
/usr/lib/libgdk-x11-2.0.so.0
#21 0xa7944a31 in g_source_is_destroyed () from /usr/lib/libglib-2.0.so.0
#22 0xa79467b1 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#23 0xa7949826 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#24 0xa7949be7 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#25 0xa7dc7141 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#26 0x080a4e9b in main (argc=1, argv=0xafb18744) at xqf.c:3945
(gdb) quit

Here is what I changed for the debug version:

diff -durp xqf-1.0.4/debian/rules xqf-1.0.4.changed/debian/rules
--- xqf-1.0.4/debian/rules      2006-10-07 19:23:31.000000000 -0400
+++ xqf-1.0.4.changed/debian/rules      2006-10-07 17:48:57.000000000 -0400
@@ -9,7 +9,7 @@ include /usr/share/cdbs/1/class/gnome.mk

DEB_CONFIGURE_EXTRA_FLAGS := --bindir=\$${prefix}/games \
        --enable-gtk2 --enable-geoip --enable-externalrcon \
-       --with-qstat=quakestat
+       --with-qstat=quakestat --enable-debug

binary-install/xqf::
        install -m 644 -p $(CURDIR)/debian/xqf.xpm
$(CURDIR)/debian/xqf/usr/share/pixmaps/xqf.xpm
diff -durp xqf-1.0.4/src/Makefile.am xqf-1.0.4.changed/src/Makefile.am
--- xqf-1.0.4/src/Makefile.am   2005-09-13 12:20:02.000000000 -0400
+++ xqf-1.0.4.changed/src/Makefile.am   2006-10-07 17:49:50.000000000 -0400
@@ -46,7 +46,9 @@ xqf_rcon_SOURCES = \
    rcon.c rcon.h \
    debug.c debug.h \
    utils.c utils.h
-xqf_rcon_CFLAGS = -DRCON_STANDALONE $(GLIB_CFLAGS) $(OLD_GTK_SUPPORT)
+xqf_rcon_CFLAGS = -DRCON_STANDALONE $(GLIB_CFLAGS) $(OLD_GTK_SUPPORT) -ggdb
+
+xqf_CFLAGS = $(CFLAGS) -ggdb

xqf_SOURCES =  \
addmaster.c \

Here's what I changed for my version.  I'm not a GTK programmer so I
don't know if my assumption that the gdk pixbuf close() frees the
loader is correct.  Their documentation says it frees all internal
structures.  When I remove the g_free(loader) calls, it will display
the level shots fine.  This change may introduce a memory leak because
it should be freed differently.  I did this because it shows there is
a problem associated with that g_free.

diff -durp xqf-1.0.4/src/Makefile.in xqf-1.0.4.changed/src/Makefile.in
--- xqf-1.0.4/src/tga/memtopixmap.c     2005-09-12 09:44:52.000000000 -0400
+++ xqf-1.0.4.changed/src/tga/memtopixmap.c     2006-10-07 19:21:40.000000000 
-0400
@@ -91,7 +91,6 @@ GdkPixbuf* renderMemToPixbuf(const gucha
  {
    unsigned h = 0, w = 0;
    unsigned char* data;
-    g_free(loader);
    loader = NULL;

    data = LoadTGA(mem, len, &w, &h);
@@ -113,7 +112,6 @@ GdkPixbuf* renderMemToPixbuf(const gucha
  else
  {
    pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
-    g_free(loader);
  }

  return pixbuf;

Reply via email to