Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 81512 - GStreamer ebuild needs to disable prelinking
Summary: GStreamer ebuild needs to disable prelinking
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: GStreamer package maintainers
URL:
Whiteboard:
Keywords:
: 91880 92849 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-02-10 09:14 UTC by Benjamin Otte
Modified: 2006-03-27 12:41 UTC (History)
7 users (show)

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


Attachments
/var/lib/cache/gstreamer-0.8/registry.xml (registry.xml,1.13 MB, text/plain)
2005-03-09 06:14 UTC, Tarmo Tänav
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Otte 2005-02-10 09:14:26 UTC
Many people use prelinking these days. Unfortunately this causes issues with GStreamer's plugin linking method.

I'd expect the ebuild to check that GStreamer and its plugins are compiled with prelinking disabled or at least emit a warning that it will most likely not work and advise the user to disable prelinking.

Reproducible: Always
Steps to Reproduce:
1. make sure prelinking is enabled
2. emerge gstreamer and gst-plugins
3. run gst-inspect adder
Actual Results:  
You get this output:

** (process:31081): CRITICAL **: how to remove plugins?
GStreamer-CRITICAL **: Factory for `adder' has no type. This probably means the
plugin wasn't found because the registry is broken. The plugin GStreamer was
looking for is named 'adder' and is expected in file
'/usr/lib/gstreamer-0.8/libgstadder.so'. The registry for this plugin is located
at '/var/lib/cache/gstreamer-0.8/registry.xml'

Followed by some normal output.

Expected Results:  
There should be output without these critical warnings, like when running
"gst-inspect fakesrc".

You can get the actual error (undefined symbols) by running "gst-inspect
--gst-debug=GST_PLUGIN_LOADING:5 adder" which will show the relevant debugging
output.
Comment 1 foser (RETIRED) gentoo-dev 2005-02-10 10:30:07 UTC
cc-ing prelink maintainer.

how to best save these libs from prelink cretin ?
Comment 2 Stefan Jones (RETIRED) gentoo-dev 2005-02-10 11:27:55 UTC
short answer:

set the PRELINK_PATH_MASK variable in /etc/env.d/

for example I have:

saj@saj ~ $ cat /etc/env.d/60prelink
PRELINK_PATH_MASK=/usr/lib/wine:/usr/lib/valgrind:/opt
PRELINK_PATH=""

Do an env-update and prelink will skip those directories.
Comment 3 foser (RETIRED) gentoo-dev 2005-02-11 05:01:22 UTC
added env mask to 0.8.9-r1 & a little postinst note. That should fix this over time.
Comment 4 Thomas Beinicke 2005-02-11 11:54:14 UTC
Is there another fix needed for that?
I reinstalled gstreamer many times and it's shown that it's not prelinked but I still get that error. Any ideas or something I might have forgotten?
Comment 5 Tarmo Tänav 2005-03-08 21:24:48 UTC
I also get this error with gstreamer which is not prelinked (just compiled it) and I do not use any strange flags in my make.conf (no LDFLAGS, just CFLAGS="-O3 -march=i686 -O3" atm.). I have ACCEPT_KEYWORDS=~x86...
Comment 6 Zaheer Abbas Merali (RETIRED) gentoo-dev 2005-03-09 00:37:27 UTC
You get this error when running gst-inspect-0.8 adder ?


** (process:31081): CRITICAL **: how to remove plugins?
GStreamer-CRITICAL **: Factory for `adder' has no type. This probably means the
plugin wasn't found because the registry is broken. The plugin GStreamer was
looking for is named 'adder' and is expected in file
'/usr/lib/gstreamer-0.8/libgstadder.so'. The registry for this plugin is located
at '/var/lib/cache/gstreamer-0.8/registry.xml'

If so please attach your /var/lib/cache/gstreamer-0.8/registry.xml and your emerge info
Comment 7 Tarmo Tänav 2005-03-09 06:11:18 UTC
# gst-inspect-0.8 adder

** (process:756): CRITICAL **: how to remove plugins?

(process:756): GStreamer-CRITICAL **: Factory for `adder' has no type. This probably means the plugin wasn't found because the registry is broken. The plugin GStreamer was looking for is named 'adder' and is expected in file '/usr/lib/gstreamer-0.8/libgstadder.so'. The registry for this plugin is located at '/var/lib/cache/gstreamer-0.8/registry.xml'
couldn't construct element for some reason
Plugin Details:
  Name:         adder
  Description:  Adds multiple streams
  Filename:     /usr/lib/gstreamer-0.8/libgstadder.so
  Version:      0.8.7
  License:      LGPL
  Package:      GStreamer source release
  Origin URL:   http://gstreamer.freedesktop.org/

  adder: Adder

  1 features:
  +-- 1 elements
Comment 8 Tarmo Tänav 2005-03-09 06:13:24 UTC
Portage 2.0.51.19 (default-linux/x86/2004.2/gcc34, gcc-3.4.3, glibc-2.3.4.20050125-r0, 2.6.11-cko1 i686)
=================================================================
System uname: 2.6.11-cko1 i686 Intel(R) Pentium(R) M processor 1.50GHz
Gentoo Base System version 1.6.9
Python:              dev-lang/python-2.3.5 [2.3.5 (#1, Feb 17 2005, 21:36:43)]
distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled]
ccache version 2.3 [enabled]
dev-lang/python:     2.3.5
sys-devel/autoconf:  2.13, 2.59-r6
sys-devel/automake:  1.4_p6, 1.7.9-r1, 1.8.5-r3, 1.6.3, 1.5, 1.9.5
sys-devel/binutils:  2.15.92.0.2-r4
sys-devel/libtool:   1.5.10-r5
virtual/os-headers:  2.6.8.1-r1, 2.6.8.1-r2
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CFLAGS="-O3 -mcpu=i686 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/mozilla/defaults/pref /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-O3 -mcpu=i686 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs autoconfig ccache distcc distlocks sandbox sfperms"
GENTOO_MIRRORS="http://ftp.linux.ee/pub/gentoo/distfiles/"
LANG="C"
LC_ALL="C"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/root/overlay /root/fluid /root/overlay2"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"
USE="x86"
Unset:  ASFLAGS, CBUILD, CTARGET, LDFLAGS
Comment 9 Tarmo Tänav 2005-03-09 06:14:24 UTC
Created attachment 53008 [details]
/var/lib/cache/gstreamer-0.8/registry.xml
Comment 10 Tarmo Tänav 2005-03-10 18:50:11 UTC
I'm unsure what exactly fixed my issue but after (again) re-emerging all gstreamer packages, this time using normal CFLAGS="-O3 -march=pentium-m -mtune=pentium-m -pipe -ftracer", everything seems to work fine.
Comment 11 Alvin A ONeal Jr 2005-05-09 19:39:02 UTC
*** Bug 91880 has been marked as a duplicate of this bug. ***
Comment 12 foser (RETIRED) gentoo-dev 2005-05-17 07:29:53 UTC
*** Bug 92849 has been marked as a duplicate of this bug. ***
Comment 13 Alvin A ONeal Jr 2005-05-17 13:52:22 UTC
I'm not sure what I haven't done, but I'm running circles around this and
nothing is changing the fact that it doesn't work for me. I've tried emerging
without prelinking, LDFLAGS, using only standard CFLAGS, double checked my alsa
config. mpg123 works fine, /dev/sound has everything it should. Utterly stumped...

Additional info: http://bugs.gentoo.org/show_bug.cgi?id=91880
Comment 14 Mike Auty (RETIRED) gentoo-dev 2005-05-20 15:20:45 UTC
I'm also seeing this, I do prelink, but I followed the procedure to remove all
prelinking and re-prelink with /usr/lib/gstreamer-0.8 in the PRELINK_PATH_MASK
environment variable.  Still no luck.

I have yet to try compiling without a hardened gcc, however, it seems that may
do the trick from Bug 85018 (which may be a duplicate of this) and from
http://forums.gentoo.org/viewtopic-p-2389234.html.  Since this bug is still
happening to people, would it be possible to mark it as open?  It's much easier
to track it down if it's still open than hunting through all the bugs marked as
resolved...

Also, has anyone determined precisely why this no longer works with the hardened
kernel, whether it ever did, and if it's possible to fix upstream so that it
doesn't do it anymore.  I've been having headaches all day with the ati driver
and my hardened toolchain, I feel like I'm being punished for trying to make my
software slightly more secure...

Perhaps just adding a check in the ebuild, that if gcc has the hardened flag set
to bring up another ewarn or an ebeep or whatever saying that it's unlikely to
work?  Any suggestions to make it more intuitive to users why the media system
embedded throughout their system just stops (with error messages that point to
the registry rather than the compilation method) would be a big help.  Thanks...

Mike  5:\
Comment 15 Johan Tibell 2006-03-27 09:59:44 UTC
The mask does not exclude: /usr/lib/libgstreamer-0.8.so.1.4.0
media-libs/gstreamer-0.8.11
I'm still having stuttering problems.
Comment 16 foser (RETIRED) gentoo-dev 2006-03-27 12:41:00 UTC
I might be wrong on this, but I think the prelinking is a problem with seperate gst plugins, not with the actual main libs.

As far as I've been able to reproduce this, it was fixed with making the plugin dirs prelink safe.