Subject: pkg/35200: Liferea fix for feed display crash on sparc64
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <khorben@defora.org>
List: pkgsrc-bugs
Date: 12/07/2006 14:35:00
>Number: 35200
>Category: pkg
>Synopsis: Liferea crashes when attempting to display a feed on sparc64
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Dec 07 14:35:00 +0000 2006
>Originator: khorben@defora.org
>Release: NetBSD 3.1.0_PATCH
>Organization:
>Environment:
System: NetBSD exxh.lan.defora.org 3.1.0_PATCH NetBSD 3.1.0_PATCH (GENERIC) #0: Sun Nov 26 15:14:36 CET 2006 khorben@exxh.lan.defora.org:/usr/obj/sys/arch/sparc64/compile/GENERIC sparc64
Architecture: sparc64
Machine: sparc64
/usr/pkg/bin/liferea-bin:
-lintl.0 => /usr/lib/libintl.so.0
-lglib-2.0.0 => /usr/pkg/lib/libglib-2.0.so.0
-lgmodule-2.0.0 => /usr/pkg/lib/libgmodule-2.0.so.0
-lgobject-2.0.0 => /usr/pkg/lib/libgobject-2.0.so.0
-lm.0 => /usr/lib/libm.so.0
-lpthread.0 => /usr/lib/libpthread.so.0
-lgdk_pixbuf-2.0.0 => /usr/pkg/lib/libgdk_pixbuf-2.0.so.0
-lX11.6 => /usr/X11R6/lib/libX11.so.6
-lXext.6 => /usr/X11R6/lib/libXext.so.6
-lXi.6 => /usr/X11R6/lib/libXi.so.6
-lpango-1.0.0 => /usr/pkg/lib/libpango-1.0.so.0
-lz.0 => /usr/lib/libz.so.0
-lfreetype.6 => /usr/pkg/lib/libfreetype.so.6
-lexpat.1 => /usr/pkg/lib/libexpat.so.1
-lfontconfig.1 => /usr/pkg/lib/libfontconfig.so.1
-lglitz.1 => /usr/pkg/lib/libglitz.so.1
-lpng12.0 => /usr/pkg/lib/libpng12.so.0
-lXrender.1 => /usr/pkg/lib/libXrender.so.1
-lICE.6 => /usr/X11R6/lib/libICE.so.6
-lSM.6 => /usr/X11R6/lib/libSM.so.6
-lcairo.2 => /usr/pkg/lib/libcairo.so.2
-lpangoft2-1.0.0 => /usr/pkg/lib/libpangoft2-1.0.so.0
-lpangocairo-1.0.0 => /usr/pkg/lib/libpangocairo-1.0.so.0
-lXrandr.2 => /usr/pkg/lib/libXrandr.so.2
-lXfixes.0 => /usr/pkg/lib/libXfixes.so.0
-lXcursor.1 => /usr/pkg/lib/libXcursor.so.1
-lgdk-x11-2.0.0 => /usr/pkg/lib/libgdk-x11-2.0.so.0
-latk-1.0.0 => /usr/pkg/lib/libatk-1.0.so.0
-lgtk-x11-2.0.0 => /usr/pkg/lib/libgtk-x11-2.0.so.0
-lgthread-2.0.0 => /usr/pkg/lib/libgthread-2.0.so.0
-lORBit-2.0 => /usr/pkg/lib/libORBit-2.so.0
-lgconf-2.4 => /usr/pkg/lib/libgconf-2.so.4
-lxml2.2 => /usr/pkg/lib/libxml2.so.2
-ldbus-1.3 => /usr/pkg/lib/libdbus-1.so.3
-ldbus-glib-1.2 => /usr/pkg/lib/libdbus-glib-1.so.2
-lc.12 => /usr/lib/libc.so.12
>Description:
Until now Liferea was apparently unusable on NetBSD/sparc64 at least, because it
instantly crashed before accessing any feed content.
According to its website Liferea has unknown issues on 64-bits platforms, but I
doubt this is not related, although it may trigger a memory corruption in some
cases.
A stack trace reads:
0x0000000044935ef0 in g_value_transforms_init ()
from /usr/pkg/lib/libgobject-2.0.so.0
(gdb) bt
#0 0x0000000044935ef0 in g_value_transforms_init ()
from /usr/pkg/lib/libgobject-2.0.so.0
#1 0x0000000040793610 in gtk_tree_model_get_valist ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#2 0x0000000040793480 in gtk_tree_model_get ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#3 0x000000000013ef94 in on_popup_zoomout_selected ()
#4 0x00000000407a499c in gtk_tree_store_move_after ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#5 0x0000000044b4c33c in g_qsort_with_data ()
from /usr/pkg/lib/libglib-2.0.so.0
#6 0x00000000407a4b18 in gtk_tree_store_move_after ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#7 0x00000000407a02e4 in gtk_tree_sortable_set_sort_column_id ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#8 0x0000000000130fd8 in itemlist_load ()
#9 0x000000000013c074 in ui_feedlist_update_iter ()
#10 0x00000000449272e8 in g_cclosure_marshal_VOID__VOID ()
from /usr/pkg/lib/libgobject-2.0.so.0
#11 0x0000000044912214 in g_closure_invoke ()
from /usr/pkg/lib/libgobject-2.0.so.0
#12 0x0000000044926d48 in g_signal_emit_by_name ()
from /usr/pkg/lib/libgobject-2.0.so.0
#13 0x0000000044925988 in g_signal_emit_valist ()
from /usr/pkg/lib/libgobject-2.0.so.0
#14 0x0000000044925d6c in g_signal_emit ()
from /usr/pkg/lib/libgobject-2.0.so.0
#15 0x00000000407ba9c4 in gtk_tree_view_set_reorderable ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#16 0x00000000407a994c in gtk_tree_view_get_type ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#17 0x00000000406b20dc in gtk_marshal_VOID__UINT_STRING ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#18 0x00000000449124e8 in g_cclosure_new_swap ()
from /usr/pkg/lib/libgobject-2.0.so.0
#19 0x0000000044912214 in g_closure_invoke ()
from /usr/pkg/lib/libgobject-2.0.so.0
#20 0x0000000044926638 in g_signal_emit_by_name ()
from /usr/pkg/lib/libgobject-2.0.so.0
#21 0x0000000044925798 in g_signal_emit_valist ()
from /usr/pkg/lib/libgobject-2.0.so.0
#22 0x0000000044925d6c in g_signal_emit ()
from /usr/pkg/lib/libgobject-2.0.so.0
#23 0x00000000407d64f0 in gtk_widget_send_expose ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#24 0x00000000406b0c60 in gtk_propagate_event ()
#25 0x00000000406afaec in gtk_main_do_event ()
from /usr/pkg/lib/libgtk-x11-2.0.so.0
#26 0x0000000040a54098 in gdk_x11_register_standard_event_type ()
from /usr/pkg/lib/libgdk-x11-2.0.so.0
#27 0x0000000044b3c7d8 in g_source_is_destroyed ()
from /usr/pkg/lib/libglib-2.0.so.0
#28 0x0000000044b3de18 in g_main_context_dispatch ()
from /usr/pkg/lib/libglib-2.0.so.0
#29 0x0000000044b3e218 in g_main_context_dispatch ()
from /usr/pkg/lib/libglib-2.0.so.0
#30 0x0000000044b3ea20 in g_main_loop_run () from /usr/pkg/lib/libglib-2.0.so.0
#31 0x00000000406af0f4 in gtk_main () from /usr/pkg/lib/libgtk-x11-2.0.so.0
#32 0x0000000000131c50 in main ()
#33 0x00000000001136b8 in ___start ()
>How-To-Repeat:
Clicking on a feed item in the items list triggers a crash on NetBSD/sparc64.
>Fix:
The following patch fixes it for me:
$NetBSD$
--- src/ui_itemlist.c.orig 2006-12-07 14:58:46.000000000 +0100
+++ src/ui_itemlist.c
@@ -104,7 +104,7 @@ GtkTreeStore * ui_itemlist_get_tree_stor
- feed icon
*/
itemstore = gtk_tree_store_new(IS_LEN,
- G_TYPE_UINT,
+ G_TYPE_ULONG,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_POINTER,
However a cleaner fix is probably to keep ULONG in there, and to modify
timeCompFunc() this way:
time_t timea, timeb; => unsigned long timea, timeb;
HTH.