After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 619717 - unit tests fail if older -good plugins are present in system plugin directory
unit tests fail if older -good plugins are present in system plugin directory
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 0.10.24
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on: 619815
Blocks:
 
 
Reported: 2010-05-26 13:44 UTC by Götz Waschk
Modified: 2010-06-24 14:44 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
patch (834 bytes, patch)
2010-05-26 20:07 UTC, David Schleef
rejected Details | Review

Description Götz Waschk 2010-05-26 13:44:40 UTC
This is on Mandriva 2010.0 with gstreamer 0.10.29 and gst-plugins-good 0.10.22.3:

make  check-TESTS
make[1]: Entering directory `/home/goetz/svn/gstreamer0.10-plugins-good/BUILD/gst-plugins-good-0.10.22.3/tests/check'

(gst-plugin-scanner:15130): GLib-GObject-WARNING **: cannot register existing type `GstGamma'

(gst-plugin-scanner:15130): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed

(gst-plugin-scanner:15130): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:15130): GLib-GObject-WARNING **: cannot register existing type `GstVideoBalance'

(gst-plugin-scanner:15130): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:15130): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:15130): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:15130): GLib-GObject-WARNING **: cannot register existing type `GstVideoFlip'

(gst-plugin-scanner:15130): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed
GConf-Fehler: Der Konfigurationsserver konnte nicht kontaktiert werden; mögliche Fehlerquellen sind, dass TCP/IP für ORBit nicht aktiviert ist oder auf Grund eines Systemabsturzes alte NFS-Sperren gesetzt sind. Unter http://projects.gnome.org/gconf/ erhalten Sie weitere Informationen (Details –  1: Läuft nicht in einer aktiven Sitzung)
sys:1: Warning: cannot register existing type `GstCapsSetter'
sys:1: Warning: g_once_init_leave: assertion `initialization_value != 0' failed

(gst-plugin-scanner:15130): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed


Then it simply hangs until you abort the program.
Comment 1 Sebastian Dröge (slomo) 2010-05-26 13:54:16 UTC
You have a libgstgamma.so, libgstvideoflip.so and libgstvideobalance.so somewhere in your GST_PLUGIN_PATH or GST_PLUGIN_SYSTEM_PATH. These three plugins were merged into a single on (libgstvideofilter.so) in gst-plugins-good since 0.10.22.
Comment 2 Tim-Philipp Müller 2010-05-26 14:01:31 UTC
Well, it is a bug in GStreamer really. We should be handling that somehow... (I'm sure there are multiple other bugs open that are related to this).
Comment 3 Götz Waschk 2010-05-26 14:03:34 UTC
After uninstalling the old gst-plugins-good package, I still get the gconf
error:

make  check-TESTS
make[1]: Entering directory
`/home/goetz/svn/gstreamer0.10-plugins-good/BUILD/gst-plugins-good-0.10.22.3/tests/check'
GConf-Fehler: Der Konfigurationsserver konnte nicht kontaktiert werden;
mögliche Fehlerquellen sind, dass TCP/IP für ORBit nicht aktiviert ist oder auf
Grund eines Systemabsturzes alte NFS-Sperren gesetzt sind. Unter
http://projects.gnome.org/gconf/ erhalten Sie weitere Informationen (Details – 
1: Läuft nicht in einer aktiven Sitzung)
sys:1: Warning: cannot register existing type `GstCapsSetter'
sys:1: Warning: g_once_init_leave: assertion `initialization_value != 0' failed

(gst-plugin-scanner:17864): GStreamer-CRITICAL **: gst_element_register:
assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed
Comment 4 Sebastian Dröge (slomo) 2010-05-26 14:13:13 UTC
(In reply to comment #2)
> Well, it is a bug in GStreamer really. We should be handling that somehow...
> (I'm sure there are multiple other bugs open that are related to this).

We could prefix all type names in gst-plugins-bad with GstBad or something like that and disallow moving of elements between plugins for core/base/good. Not sure what else we could do here (and it's only a warning anyway...)
Comment 5 Tim-Philipp Müller 2010-05-26 14:24:56 UTC
There are at least two issues as far as I can tell:

a) unit tests within a source tree: for these we should have some sort of plugin loading whitelist environent variable to make sure only plugins of modules we depend on for the tests are loaded (ie. core/base), but not random other plugins (ie. esp. not from -ugly or -bad or installed -good in this case).

b) we should have some kind of system that allows saying 'this plugin/element replaces this plugin/element from $module $start_version $min_version)" or somesuch.
Comment 6 Götz Waschk 2010-05-26 14:30:45 UTC
OK, after uninstalling all old gstreamer plugin packages from the system, the checks ran fine.
Comment 7 David Schleef 2010-05-26 20:05:38 UTC
Another potential solution is to install a dummy plugin over old plugins whose elements have been moved elsewhere.

Or, we could remove old plugins during 'make install'.
Comment 8 David Schleef 2010-05-26 20:07:30 UTC
Created attachment 162046 [details] [review]
patch

A patch to do the latter.  The former seems like overkill, since this problem doesn't affect people who install binaries from distros.  (Unless they package each plugin as a separate package, but that's their problem.)
Comment 9 Sebastian Dröge (slomo) 2010-05-27 05:01:25 UTC
This doesn't help for the capssetter problem though (which was moved between plugins but both plugins still contain valid other elements)
Comment 10 Tim-Philipp Müller 2010-06-24 14:41:57 UTC
I think this should take care of it:

commit 8afc8a7398fd5581b0d40dccdffec971e9dee789
Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
Date:   Thu Jun 24 15:17:11 2010 +0100

    tests: add plugin loading whitelist to test environment
    
    Only want to load core/base/good plugins here.
    
    Fixes #619717.
Comment 11 Tim-Philipp Müller 2010-06-24 14:43:09 UTC
Comment on attachment 162046 [details] [review]
patch

I think the consensus on this one was "let's not go there", wasn't it?