Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 40695 - rhythmbox crashes on startup with a segfault
Summary: rhythmbox crashes on startup with a segfault
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: High normal
Assignee: Gentoo Linux Gnome Desktop Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-02-07 02:57 UTC by Benjamin Schindler (RETIRED)
Modified: 2004-03-06 07:36 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
patch for rhythmbox to work with amd64 (rhythmbox-0.6.5-amd64.patch,2.25 KB, patch)
2004-02-25 12:28 UTC, Max Nickel
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Schindler (RETIRED) gentoo-dev 2004-02-07 02:57:22 UTC
Either rhythmbox or glib seems to be 64-bit unsafe. When starting rhythmbox, it crashes as follows:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 29267)]
0x000000000045eca3 in rhythmdb_tree_do_full_query (adb=0x47758c,
query=0x50, main_model=0x0, cancel=0xbfffeb50) at rhythmdb-tree.c:1740
1740  struct RhythmDBTreeQueryGatheringData *data = g_new (struct RhythmDBTreeQueryGatheringData, 1);

The callstack is as follows:

#0  0x000000000045eca3 in rhythmdb_tree_do_full_query (adb=0x47758c,
query=0x50, main_model=0x0, cancel=0xbfffeb50)
    at rhythmdb-tree.c:1740
#1  0x0000000000462603 in rb_source_have_artist_album (source=0x766360)
at rb-source.c:518
#2  0x0000000000426a3f in rb_shell_player_sync_with_selected_source
(player=0x6fadd0) at rb-shell-player.c:1653
#3  0x0000000000423f0f in rb_shell_player_set_property (object=0x6fadd0,
prop_id=1, value=0xbfffeb50,
    pspec=0x6f6310) at rb-shell-player.c:658
#4  0x0000002a983574de in g_object_set_valist () from
/usr/lib/libgobject-2.0.so.0
#5  0x0000002a98357b39 in g_object_set () from
/usr/lib/libgobject-2.0.so.0
#6  0x000000000042454b in rb_shell_player_set_selected_source
(player=0x6fadd0, source=0x766360)
    at rb-shell-player.c:786
#7  0x00000000004218c1 in rb_shell_select_source (shell=0x6954c0,
source=0x766360) at rb-shell.c:1527
#8  0x0000000000420b93 in rb_shell_construct (shell=0x6954c0) at
rb-shell.c:1189
#9  0x000000000041e024 in rb_init (shell=0x6954c0) at main.c:218
#10 0x0000002a98c77f6e in g_idle_dispatch () from
/usr/lib/libglib-2.0.so.0
#11 0x0000002a98c7573f in g_main_dispatch () from
/usr/lib/libglib-2.0.so.0
#12 0x0000002a98c7664c in g_main_context_dispatch () from
/usr/lib/libglib-2.0.so.0
#13 0x0000002a98c76914 in g_main_context_iterate () from
/usr/lib/libglib-2.0.so.0
#14 0x0000002a98c76f1d in g_main_loop_run () from
/usr/lib/libglib-2.0.so.0
#15 0x0000002a978b2b9b in bonobo_main () from /usr/lib/libbonobo-2.so.0
#16 0x000000000041deed in main (argc=1, argv=0xbffff628) at main.c:173

rhythmbox fails on g_new, but I don't see anything wrong with this call - may be there is some bug in the memory-allocation-bug in glib?

g_new is declared as follows:

#define g_new(struct_type, n_structs)		\
    ((struct_type *) g_malloc (((gsize) sizeof (struct_type)) * ((gsize) (n_structs))))

But g_malloc looks like this:

g_malloc (gulong n_bytes)

shoudlnd't therefore gsize be gulong?

Reproducible: Always
Steps to Reproduce:
1. start rhythmbox
2.
3.

Actual Results:  
segfault

Expected Results:  
programm nicely running ;)

Portage 2.0.49-r21 (default-amd64-2004.0, gcc-3.3.2, glibc-2.3.2-r9, 2.6.1-gentoo)
=================================================================
System uname: 2.6.1-gentoo x86_64 4
Gentoo Base System version 1.4.3.12
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CFLAGS="-O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
COMPILER="gcc3"
CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3.2/share/config /usr/kde/3/share/config /usr/share/config
/usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/
/var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"
CXXFLAGS="-O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs ccache sandbox"
GENTOO_MIRRORS="http://sunsite.cnlab-switch.ch/ftp/mirror/gentoo
http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="3dnow X aalib acpi alsa amd64 apm arts avi berkdb bonobo cdr crypt cups doc
dvd encode esd foomaticdb gdbm gif gnome gpm gstreamer gtk gtk2 imlib jpeg kde
libg++ libwww mikmod mmx motif mozilla mpeg ncurses nls nptl oggvorbis opengl
oss pam pdflib perl png python qt quicktime readline samba sdl slang spell sse
ssl tcpd tetex truetype unicode xml2 xmms xv zlib"
Comment 1 Max Nickel 2004-02-25 12:28:02 UTC
Created attachment 26339 [details, diff]
patch for rhythmbox to work with amd64

the patch for the ebuild (rhythmbox-0.6.5):
--- /usr/portage/media-sound/rhythmbox/rhythmbox-0.6.5.ebuild	2004-02-12
18:36:23.000000000 +0100
+++ /usr/local/portage/media-sound/rhythmbox/rhythmbox-0.6.5.ebuild    
2004-02-25 21:17:44.336819496 +0100
@@ -56,6 +56,11 @@
 src_unpack( ) {
  
	unpack ${A}
+
+	if [ "${ARCH}" = "amd64" ]; then
+		einfo "Applying AMD64 patch"
+		epatch ${FILESDIR}/${P}-amd64.patch || die "patch failed"
+	fi
  
	cd ${S}
	# sandbox errors work around

all the work has been done by Config and the rhytmbox-devs.
Comment 2 Yi Quang (RETIRED) gentoo-dev 2004-02-25 16:45:29 UTC
Thanks for the patch, it looks good to me and rhythmbox should theoretically by using glib's functions to begin with.  I'll forward this upstream to see if the patch is sane.  
Comment 3 Alastair Tse (RETIRED) gentoo-dev 2004-03-06 07:36:07 UTC
for patches like these, it is always best to apple them without the if-case.  i notice that is already in for 0.6.5 in cvs.