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"
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.
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.
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.