32-bit Gstreamer Broken on 64-bit system

Issues related to applications and software problems
Post Reply
poncho524
Posts: 7
Joined: 2014/08/01 13:34:44

32-bit Gstreamer Broken on 64-bit system

Post by poncho524 » 2021/10/21 18:03:58

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?

User avatar
TrevorH
Site Admin
Posts: 33191
Joined: 2009/09/24 10:40:56
Location: Brighton, UK

Re: 32-bit Gstreamer Broken on 64-bit system

Post by TrevorH » 2021/10/21 18:19:50

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

poncho524
Posts: 7
Joined: 2014/08/01 13:34:44

Re: 32-bit Gstreamer Broken on 64-bit system

Post by poncho524 » 2021/10/21 18:48:18

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

poncho524
Posts: 7
Joined: 2014/08/01 13:34:44

Re: 32-bit Gstreamer Broken on 64-bit system

Post by poncho524 » 2021/10/21 18:49:42

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

poncho524
Posts: 7
Joined: 2014/08/01 13:34:44

Re: 32-bit Gstreamer Broken on 64-bit system

Post by poncho524 » 2021/10/21 19:18:00

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.

Zuriel
Posts: 1
Joined: 2021/12/15 04:26:59

Re: 32-bit Gstreamer Broken on 64-bit system

Post by Zuriel » 2021/12/15 04:52:28

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:
(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.

Post Reply