http://bugzilla.opensuse.org/show_bug.cgi?id=1049452 Bug ID: 1049452 Summary: The 32 bit GStreamer 1.0 packages are broken on 64 bit openSUSE Classification: openSUSE Product: openSUSE Distribution Version: Leap 42.2 Hardware: Other OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: GNOME Assignee: bnc-team-gnome@forge.provo.novell.com Reporter: fgouget@codeweavers.com QA Contact: qa-bugs@suse.de Found By: --- Blocker: --- Created attachment 732967 --> http://bugzilla.opensuse.org/attachment.cgi?id=732967&action=edit Test application Description of problem: 32 bit applications fail to find any GStreamer element with errors like: (gst-plugin-scanner:16235): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstvideoconvert.so': /usr/lib/gstreamer-1.0/libgstvideoconvert.so: wrong ELF class: ELFCLASS32 Versions impacted: This impacts all versions of the gstreamer package from 1.0.10-2.1.4 in openSUSE 13.1 to 1.8.3-1.8 in openSUSE 42.2. How reproducible: 100% reproducible. Steps to reproduce: 1. Install a 64 bit version of openSUSE. This is expected to install the 64 bit GStreamer packages. 2. Install the 32 bit GStreamer packages: zypper install gstreamer-32bit gstreamer-plugins-base-32bit 3. Ideally I'd recommend using the 32 bit gst-inspect-1.0 tool but it is nowhere to be found. So instead download the attached test application and compile it: gcc -m32 -o cxgstcheck `pkg-config --cflags gstreamer-1.0` `pkg-config --libs gstreamer-1.0` cxgstcheck.c 4. Clear the 32 bit registry and run the 32 bit cxgstcheck application to force recreating it: rm ~/.cache/gstreamer-1.0/registry.i686.bin ./cxgstcheck Note that while in this case we are using a test application, 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. Actual results: $ ./cxgstcheck [...] (gst-plugin-scanner:16235): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstvideoconvert.so': /usr/lib/gstreamer-1.0/libgstvideoconvert.so: wrong ELF class: ELFCLASS32 [...] Bitness: 32 bits could not instantiate h264parse could not instantiate videoconvert could not instantiate vp9dec could not instantiate asfdemux Expected results: cxgstcheck should not issue ELFCLASS32 errors. It should also at least find the videoconvert element since we installed gstreamer-plugins-base-32bit. $ ./cxgstcheck Bitness: 32 bits could not instantiate h264parse found videoconvert could not instantiate vp9dec could not instantiate asfdemux Additional info: The reason for this bug is that GStreamer applications rely on the ~/.cache/gstreamer-1.0/registry.i686.bin file to figure out which plugin (aka library) provides a given GStreamer element. However generating that file is delegated to the /usr/lib/gstreamer-1.0/gst-plugin-scanner tool and on a 64 bit system this is a 64 bit executable provided by the gstreamer package. As a 64 bit tool it is only able to load 64 bit GStreamer plugins. As a result ~/.cache/gstreamer-1.0/registry.i686.bin is empty and 32 bit applications are unable to find any GStreamer element. As a side-note, since gst-plugin-scanner is a 64 bit tool it should be in /usr/lib64, not in /usr/lib! Also note that 'zypper search -f gst-plugin-scanner' does not find any 32 bit package providing that tool. -- You are receiving this mail because: You are on the CC list for the bug.