Running gst-register-0.8 caused a segfault while registering plugins. I narrowed this down to the files libgstmodplug.so and/or libgstmodplug.la in /usr/lib/gstreamer-0.8/ . ldd reports libgstmodplug.so has all required links. Removing and remerging gstreamer and gst-plugins (only, leaving other plugins out for now) still causes gst-register-0.8 to fail. After some googling, I came across the following entry on the freebsd-gnome mailing list. http://lists.freebsd.org/pipermail/freebsd-gnome/2004-September/008265.html I first tried recomiling without my --march setting, and it continued to have the same issue. Recompiling gstreamer and gst-plugins with CFLAGS="" and CXXFLAGS="" corrected the issue. I've readded all other required gst-plugins (-alsa, -ogg, etc) with the same cflags settings and everything is working as expected. Note that this is an entirely ~x86 system. Reproducible: Always Steps to Reproduce: 1. emerge gstreamer 2. gst-register-0.8 3. Actual Results: gst-register segfaults. Expected Results: gst-register registers all plugins, and I can listen to music. Portage 2.0.51-r3 (gcc34-x86-2004.2, gcc-3.4.3, glibc-2.3.4.20041102-r0, 2.6.8-ck4 i686) ================================================================= System uname: 2.6.8-ck4 i686 Unknown CPU Typ Gentoo Base System version 1.6.6 Autoconf: sys-devel/autoconf-2.59-r5 Automake: sys-devel/automake-1.8.5-r1 Binutils: sys-devel/binutils-2.15.92.0.2-r1 Headers: sys-kernel/linux26-headers-2.6.8.1-r1 Libtools: sys-devel/libtool-1.5.2-r7 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-Os -march=athlon-xp -fomit-frame-pointer -pipe" CHOST="i686-pc-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-Os -march=athlon-xp -fomit-frame-pointer -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache distlocks fixpackages sandbox" GENTOO_MIRRORS="http://mirrors.tds.net/gentoo ftp://ftp.ndlug.nd.edu/pub/gentoo/ http://mirror.datapipe.net/gentoo http://adelie.polymtl.ca/ ftp://mirrors.tds.net/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 acpi aim alsa apm avi berkdb bindist bitmap-fonts bonobo cdinstall cdparanoia cdr crypt cups dga divx4linux dvd encode esd f77 fam foomaticdb fortran gdbm gif gnome gstreamer gtk gtk2 icq imagemagick imlib jpeg libg++ libwww lm_sensors mad mikmod mmx mono motif mozilla moznocompose moznoirc moznomail mozsvg mpeg mpeg4 mplayer msn ncurses nls no_wxgtk1 nowin nptl offensive oggvorbis opengl oss pam pda pdflib perl png python quicktime radeon readline samba sdl slang spell sse ssl svga tcpd tiff truetype unicode usb v4l wxwindows x86 xml2 xosd xrandr xv yahoo zlib"
I'd like to add that I ran into the same problem on ~x86 and CFLAGS didn't fix it, but switching to gcc-3.3.4 did. Is this a problem with gstreamer or gcc?
I'm on gcc 3.4.3 when I tried this.
it might be '-Os' with a certain compiler, to check that the reporter should compile with say gcc-3.3 or gcc-2
I just tried this. With gcc 3.4.3, CFLAGS="-march=pentium4 -Os -pipe" -- Failure CFLAGS="-march=pentium4 -O -pipe" -- Failure CFLAGS="" -- Failure with gcc 3.3.4 CFLAGS="-march=pentium4 -Os -pipe" -- Failure Emerge info: Portage 2.0.51-r8 (default-linux/x86/2004.3, gcc-3.3.4, glibc-2.3.4.20041102-r0, 2.6.8-gentoo-r3 i686) ================================================================= System uname: 2.6.8-gentoo-r3 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz Gentoo Base System version 1.6.8 Python: dev-lang/python-2.3.4 [2.3.4 (#1, Dec 26 2004, 11:36:30)] distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] dev-lang/python: 2.3.4 sys-devel/autoconf: 2.59-r6, 2.13 sys-devel/automake: 1.8.5-r2, 1.5, 1.4_p6, 1.6.3, 1.9.3, 1.7.9 sys-devel/binutils: 2.15.92.0.2-r2 sys-devel/libtool: 1.5.10-r2 virtual/os-headers: 2.6.8.1-r1 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-march=pentium4 -Os -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-march=pentium4 -Os -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs autoconfig cvs distcc distlocks nostrip sandbox sfperms userpriv" GENTOO_MIRRORS="http://mirrors.acm.cs.rpi.edu/gentoo/ http://gentoo.mirrors.pair.com/ http://mirrors.tds.net/gentoo http://ftp.gentoo.or.kr/" MAKEOPTS="-j6" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/home/gentoo/tmp" PORTDIR="/home/gentoo/portage-rsync" PORTDIR_OVERLAY="/home/gentoo/portage" SYNC="rsync://www.thedoh.com/gentoo-portage" USE="x86 3dnow X acl acpi aim alsa audiofile avi bcmath berkdb bidi bitmap-fonts bonobo bzlib calendar cdb cdr crypt cscope csope ctype curl dio divx4linux dvd dvdr dvdread encode esd ethereal evo exif fam flac flash foomaticdb fortran freetds freewnn ftp gb gd gdbm gif gnome gpm gstreamer gtk gtk2 icq imagemagick imlib innodb ipv6 jpeg ladcca lcms ldap lesstif libg++ libwww mad maildir mbox mcal mikmod mime ming mjpeg mmx mng motif moznocompose moznoirc moznomail moznoxfg mpeg mpi msn mysql ncurses nls nptl offensive oggvorbis opengl oscar oss pam pcre pdflib perl png pnp python qt quicktime readline samba sasl sdl simplexml slang snmp soap speex spell sse ssl svga tcltk tcpd tidy tiff truetype unicode usb xine xml xml2 xmlrpc xmms xsl xv xvid yahoo zlib" gstreamer was compiled with +debug for the backtrace. Backtrace: Starting program: /usr/bin/gst-register-0.8 [Thread debugging using libthread_db enabled] [New Thread 1077773024 (LWP 17793)] Rebuilding global_registry (/var/lib/cache/gstreamer-0.8/registry.xml) ... Added plugin decodebin with 1 feature. Added plugin playbin with 1 feature. Added plugin alphacolor with 1 feature. Added plugin gstmultifilesink with 1 feature. Added plugin alsa with 3 features. Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1077773024 (LWP 17793)] 0x407e3e00 in CzCUBICSPLINE::CzCUBICSPLINE () from /usr/lib/gstreamer-0.8/libgstmodplug.so (gdb) bt #0 0x407e3e00 in CzCUBICSPLINE::CzCUBICSPLINE () from /usr/lib/gstreamer-0.8/libgstmodplug.so #1 0x407eb351 in X86_StereoFill () from /usr/lib/gstreamer-0.8/libgstmodplug.so #2 0x407fbdb5 in ModPlug_SetSettings () from /usr/lib/gstreamer-0.8/libgstmodplug.so #3 0x407d7af8 in _init () from /usr/lib/gstreamer-0.8/libgstmodplug.so #4 0x4000abac in _dl_rtld_di_serinfo () from /lib/ld-linux.so.2 #5 0x4000ac5d in _dl_rtld_di_serinfo () from /lib/ld-linux.so.2 #6 0x403a8bf0 in getutmpx () from /lib/tls/libc.so.6 #7 0x4000aa41 in _dl_rtld_di_serinfo () from /lib/ld-linux.so.2 #8 0x403a9129 in _dl_open () from /lib/tls/libc.so.6 #9 0x40269d58 in ?? () from /lib/libdl.so.2 #10 0xfffffffe in ?? () #11 0x0052e0e4 in ?? () #12 0xbffff14c in ?? () #13 0x40080efe in __PRETTY_FUNCTION__.2 () from /usr/lib/libgstreamer-0.8.so.1 #14 0x403aa6e9 in __libc_dlclose () from /lib/tls/libc.so.6 #15 0x4000aa41 in _dl_rtld_di_serinfo () from /lib/ld-linux.so.2 #16 0x4026a220 in dlerror () from /lib/libdl.so.2 #17 0x40269da0 in dlopen () from /lib/libdl.so.2 #18 0x402676ff in g_module_open () from /usr/lib/libgmodule-2.0.so.0 #19 0x4005a00a in gst_plugin_check_file ( ---Type <return> to continue, or q <return> to quit--- filename=0x806e200 "/usr/lib/gstreamer-0.8/libgstmodplug.so", error=0x0) at gstplugin.c:333 #20 0x4005a5f5 in gst_plugin_load_file ( filename=0x806e200 "/usr/lib/gstreamer-0.8/libgstmodplug.so", error=0x0) at gstplugin.c:381 #21 0x40077989 in gst_xml_registry_rebuild (registry=0x80524a8) at gstxmlregistry.c:1432 #22 0x4006da90 in gst_registry_rebuild (registry=0x80524a8) at gstregistry.c:187 #23 0x08048d91 in main (argc=1, argv=0xbffff4b4) at gst-register.c:129
so in short an -Os problem with some compilers ?
I also had this problem, using gcc 3.4.3 and -Os the problem was solved by replacing -Os for -O2, still using gcc 3.4.3 So, for me: With gcc 3.4.3, CFLAGS="-march=athlonxp -Os -pipe" -- Failure CFLAGS="-march=athlonxp -O2 -pipe" -- Success
The same happens here with gstreamer-0.8.8. The change of -Os to -O2 fixed the problem with segmentation faults. The problem seems to be in gst-plugins and not in gstreamer. At least on my case just re-emerging gst-plugins with -O2 fixed everything without emerging again gstreamer. I'm using gcc-3.4.3, didn't try with other versions.
gcc 3.4.x bug. you should report it upstream. http://gcc.gnu.org/bugzilla/
added an Os->O2 statement in 0.8.8 to be on the safe side for now