GNOME Bugzilla – Bug 113748
Plugin(s) not linked to libgstreamer
Last modified: 2004-12-22 21:47:04 UTC
The plugin libgstoptscheduler.so (and possibly others too) is not linked with libgstreamer (as can be seen with ldd). This causes a problem (undefined symbol: _gst_bin_type) when gstreamer itself is used in a plugin (at least in my case). The problem can be avoided by preloading libgstreamer with LD_PRELOAD.
Plugins are not supposed to be linked with libgstreamer, since they are designed to be loaded by it. Can you provide more information about what you are trying to do?
I wrote a plugin to a comercial closed-source source system. This plugin uses gstreamer (and is linked to libgstreamer). Loading this plugin is no problem. But then gstreamer in turn tries to load its plugins it fails for libgstoptscheduler.so. libgstoptscheduler.so: undefined symbol: _gst_bin_type This symbol is defined in libgstreamer, but accessible to gstreamers plugins. I suspect this can be avoided with the RTDL_GLOBAL flag to dlopen() when my plugin is loaded (from the closed-source program).
Could you try to reproduce the problem by modifying an existing plugin (or, say, gst-template/gst-plugin/)? I can't possibly imagine why this might happen.
You try to use GStreamer plugins from an application, that is not linked against GStreamer for whatever reason. Is this correct?
I'm writing a plugin to a system made by verity, lets call that the verity-plugin. This verity-plugin uses gstreamer and is linked to libgstreamer. So the gstreamer-plugin (libgstoptscheduler.so in this case) is loaded by the verity-plugin which in turn is loaded by a closed-source application. I will try to reproduce this error without the closed-source application as soon as possible. Correction to my prevoius comment: The symbol specified in libgstreamer (_gst_bin_type) is NOT accessible to the gstreamer-plugin.
Created attachment 16993 [details] A few lines of code which reproduces the bug
Created attachment 17931 [details] [review] patch
I understand now. One way to get around this is to have the verity-plugin reload itself using the RTLD_GLOBAL flag. See the patch.
If you want to dicuss this further, please reopen.