Mailinglist Archive: opensuse-bugs (4775 mails)

< Previous Next >
[Bug 1049452] New: The 32 bit GStreamer 1.0 packages are broken on 64 bit openSUSE
  • From: bugzilla_noreply@xxxxxxxxxx
  • Date: Wed, 19 Jul 2017 13:47:09 +0000
  • Message-id: <bug-1049452-21960@http.bugzilla.opensuse.org/>
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@xxxxxxxxxxxxxxxxxxxxxx
Reporter: fgouget@xxxxxxxxxxxxxxx
QA Contact: qa-bugs@xxxxxxx
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.
< Previous Next >