I have a simple application that uses gstreamer to display a video. works fine in 64 bit, breaks in 32 bit.
This is because gstreamer relies on /usr/libexec/gstreamer-1.0/gst-plugin-scanner. and the way RHEL/CentOS packages up the 64 bit and 32 versions of gstreamer doesn't differentiate between the two.
So the 32-bit library tries calling gst-plugin-scanner which is 64-bit and therefore a mismatch and broken.
anyone else run into this and have any kind of work around?
32-bit Gstreamer Broken on 64-bit system
Re: 32-bit Gstreamer Broken on 64-bit system
What's the output from rpm -qa gstreamer\*
The future appears to be RHEL or Debian. I think I'm going Debian.
Info for USB installs on http://wiki.centos.org/HowTos/InstallFromUSBkey
CentOS 5 and 6 are deadest, do not use them.
Use the FAQ Luke
Info for USB installs on http://wiki.centos.org/HowTos/InstallFromUSBkey
CentOS 5 and 6 are deadest, do not use them.
Use the FAQ Luke
Re: 32-bit Gstreamer Broken on 64-bit system
gstreamer-plugins-good-0.10.31-13.el7.x86_64
gstreamer1-plugins-base-1.10.4-2.el7.x86_64
gstreamer1-plugins-base-devel-1.10.4-2.el7.i686
gstreamer-plugins-bad-free-0.10.23-23.el7.x86_64
gstreamer1-1.10.4-2.el7.x86_64
gstreamer-0.10.36-7.el7.i686
gstreamer-tools-0.10.36-7.el7.x86_64
gstreamer1-devel-1.10.4-2.el7.i686
gstreamer1-1.10.4-2.el7.i686
gstreamer-devel-0.10.36-7.el7.i686
gstreamer-0.10.36-7.el7.x86_64
gstreamer1-devel-1.10.4-2.el7.x86_64
gstreamer1-plugins-good-1.10.4-2.el7.x86_64
gstreamer1-plugins-base-1.10.4-2.el7.i686
gstreamer1-plugins-base-devel-1.10.4-2.el7.x86_64
gstreamer-plugins-base-0.10.36-10.el7.x86_64
gstreamer1-plugins-bad-free-1.10.4-3.el7.x86_64
gstreamer1-plugins-ugly-free-1.10.4-3.el7.x86_64
gstreamer1-plugins-base-1.10.4-2.el7.x86_64
gstreamer1-plugins-base-devel-1.10.4-2.el7.i686
gstreamer-plugins-bad-free-0.10.23-23.el7.x86_64
gstreamer1-1.10.4-2.el7.x86_64
gstreamer-0.10.36-7.el7.i686
gstreamer-tools-0.10.36-7.el7.x86_64
gstreamer1-devel-1.10.4-2.el7.i686
gstreamer1-1.10.4-2.el7.i686
gstreamer-devel-0.10.36-7.el7.i686
gstreamer-0.10.36-7.el7.x86_64
gstreamer1-devel-1.10.4-2.el7.x86_64
gstreamer1-plugins-good-1.10.4-2.el7.x86_64
gstreamer1-plugins-base-1.10.4-2.el7.i686
gstreamer1-plugins-base-devel-1.10.4-2.el7.x86_64
gstreamer-plugins-base-0.10.36-10.el7.x86_64
gstreamer1-plugins-bad-free-1.10.4-3.el7.x86_64
gstreamer1-plugins-ugly-free-1.10.4-3.el7.x86_64
Re: 32-bit Gstreamer Broken on 64-bit system
the app compiles fine, but then when it runs, it spits out a whole bunch of
Code: Select all
(gst-plugin-scanner:11680): GStreamer-WARNING **: 14:49:13.746: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstopus.so': /usr/lib/gstreamer-1.0/libgstopus.so: wrong ELF class: ELFCLASS32
Re: 32-bit Gstreamer Broken on 64-bit system
for further detail.
if you grab the 32-bit rpm of gstreamer1 and unpack it somewhere else, you can get 32-bit gstreamer apps to work by setting env var GST_PLUGIN_SCANNER to the path of the "gst-plugin-scanner" that comes with the 32-bit rpm, then all will work fine.
the problem is the 32-bit gstreamer library invokes /usr/libexec/gst-plugin-scanner, which in RHEL/CentOS's case is always the 64-bit version, and is therefore discarding the 32-bit version of the plugins, which then breaks the 32-bit application.
I hoped someone else might have seen this issue before and had a work around.
if you grab the 32-bit rpm of gstreamer1 and unpack it somewhere else, you can get 32-bit gstreamer apps to work by setting env var GST_PLUGIN_SCANNER to the path of the "gst-plugin-scanner" that comes with the 32-bit rpm, then all will work fine.
the problem is the 32-bit gstreamer library invokes /usr/libexec/gst-plugin-scanner, which in RHEL/CentOS's case is always the 64-bit version, and is therefore discarding the 32-bit version of the plugins, which then breaks the 32-bit application.
I hoped someone else might have seen this issue before and had a work around.
Re: 32-bit Gstreamer Broken on 64-bit system
Running gst-inspect-1.0 with the --gst-disable-registry-fork flag makes it scan the plugins itself instead of running the gst-plugin-scanner executable. This works around the issue.
If you delete or set gst-plugin-scanner to unexecutable, this also works. You get an error message that gst-plugin-scanner is missing, and then gstreamer continues on scanning plugins without it:
If you delete or set gst-plugin-scanner to unexecutable, this also works. You get an error message that gst-plugin-scanner is missing, and then gstreamer continues on scanning plugins without it:
(gst-inspect-1.0:16575): GStreamer-WARNING **: 15:10:53.066: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. You might need to set the GST_PLUGIN_SCANNER environment variable if your setup is unusual. This should normally not be required though.