gst_init exceptions when it is used in a dynamic lib which is loaded by dlopen
Halley Zhao
aihua.halley.zhao at gmail.com
Thu Jun 20 10:29:59 UTC 2019
我把gst_init/gst_deinit移到了动态库的外部,也就是进程仅做一次gst_init/gst_deinit.
然后出现创想GstAudioClock的时候失败:
(cowplayer_test:5466): GLib-GObject-WARNING **: cannot register existing
type 'GstAudioClock'
(cowplayer_test:5466): GLib-CRITICAL **: g_once_init_leave: assertion
'result != 0' failed
(cowplayer_test:5466): GLib-GObject-CRITICAL **: g_object_new: assertion
'G_TYPE_IS_OBJECT (object_type)' failed
Halley Zhao <aihua.halley.zhao at gmail.com> 于2019年6月20日周四 下午6:05写道:
> Hi experts:
> I created a dynamic lib to use gst, and the lib is loaded by dlopen.
> then there is exception to load the lib for a second playback.
>
> 1. if I call gst_deinit() before dlclose the lib. I fail to create any gst
> element next time after calling gst_init() again. gst_init_check() said
> gst has already been inited.
>
> 0:00:08.140795000 5131 0xffff98003e90 DEBUG GST_INIT
> gst.c:417:gst_init_check: already initialized gst
> 0:00:08.140939875 5131 0xffff98003e90 WARN GST_ELEMENT_FACTORY
> gstelementfactory.c:456:gst_element_factory_make: no such element factory
> "appsrc"!
>
> 2. if I skip call gst_deinit() before dlclose the lib, some exception
> comes for g_type_check
> (gdb) bt
> #0 0x0000ffffbeb67dd8 in strcmp () from /usr/lib64/libc.so.6
> #1 0x0000ffffbf16ba5c in g_str_equal () from /usr/lib64/libglib-2.0.so
> #2 0x0000ffffbf16af08 in g_hash_table_lookup ()
> from /usr/lib64/libglib-2.0.so
> #3 0x0000ffffbf18d648 in g_intern_static_string ()
> from /usr/lib64/libglib-2.0.so
> #4 0x0000ffffb70548dc in gst_audio_clock_get_type ()
> from /usr/lib64/libgstaudio-1.0.so.0
> #5 0x0000ffffb705494c in gst_audio_clock_new ()
> from /usr/lib64/libgstaudio-1.0.so.0
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20190620/05837713/attachment.html>
More information about the gstreamer-devel
mailing list