Red Hat Bugzilla – Bug 1472160
The 32 bit GStreamer 1.0 packages are broken on 64 bit Fedora
Last modified: 2017-07-18 04:13:45 EDT
Description of problem:
32 bit applications fail to find any GStreamer element with errors like:
(gst-plugin-scanner:24901): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstvideoconvert.so': /usr/lib/gstreamer-1.0/libgstvideoconvert.so: wrong ELF class: ELFCLASS32
Version-Release number of selected component (if applicable):
This impacts all versions of the gstreamer1 package from 1.0.10-1 in Fedora 18 to 1.12.1-1 in Fedora 26.
Steps to Reproduce:
1. Install a 64 bit version of Fedora.
2. Install the 32 bit GStreamer packages:
dnf install gstreamer1-plugins-base.i686
3. Download and extract the 32 bit gstreamer1 package for your Fedora version. For instance
dnf download gstreamer1.i686
rpm2cpio gstreamer1*.rpm | cpio -idmv
4. Clear the 32 bit registry and run the 32 bit gst-inspect-1.0 tool to force recreating it:
Note that while in this case we are using the standard 32 bit gst-inspect-1.0 binary, this affects any 32 bit application. In particular it impacts Wine and thus any 32 bit Windows application (such as games) that depends on winegstreamer.dll.
$ ~/gst1/usr/bin/gst-inspect-1.0 videoconvert
(gst-plugin-scanner:24820): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstvideoconvert.so': /usr/lib/gstreamer-1.0/libgstvideoconvert.so: wrong ELF class: ELFCLASS32
No such element or plugin 'videoconvert'
Information about the videoconvert element of the 32 bit gstreamer1-plugins-base package.
The reason for this bug is that scanning the plugins is delegated to /usr/libexec/gstreamer-1.0/gst-plugin-scanner. However on a 64 bit system this is a 64 bit executable provided by gstreamer1.x86_64 which is thus only able to load 64 bit GStreamer plugins.
As proof, the above issue can be fixed by running the following commands:
* As root:
mv /usr/libexec/gstreamer-1.0/gst-plugin-scanner /usr/libexec/gstreamer-1.0/gst-plugin-scanner.x86_64
cp /home/user/gst1/usr/libexec/gstreamer-1.0/gst-plugin-scanner /usr/libexec/gstreamer-1.0
* Then in the user account the 32 bit gst-inspect-1.0 command will then return the expected result:
However this is obviously not a proper fix since that breaks scanning 64 bit plugins.