GNOME Bugzilla – Bug 668343
[0.11] - segfault when using missing plugin support in 0.11
Last modified: 2012-02-25 00:47:44 UTC
Getting the following when trying to use the missing plugin support in pbutils: checking for elements containerchoise is MXF incomingcaps is application/mxf containerchoice returned is False containerstatus is here False strmissing is ['gstreamer|0.11|transmageddon.py|Material eXchange Format (MXF) muxer|encoder-application/mxf'] Segmentation fault
Created attachment 205695 [details] GST_DEBUG log
Program received signal SIGSEGV, Segmentation fault. 0x4e30fc3f in __strcmp_sse4_2 () from /lib/libc.so.6 (gdb) thread apply all bt
+ Trace 229481
Thread 1 (Thread 0xb7fd76c0 (LWP 21595))
Just tested this with current git master and it is still an issue.
But it can't be reproduced with a simple python script ?
Doing the following in ipython reproduces it for me: from gi.repository import Gst from gi.repository import GstPbutils Gst.init(None) GObject.threads_init() caps=Gst.Caps.from_string("application/mxf") missing = GstPbutils.missing_encoder_installer_detail_new(caps) context = GstPbutils.InstallPluginsContext () strmissing = str(missing) def donemessage(): print "done" GstPbutils.install_plugins_async (strmissing, context, donemessage, None)
Fixed the annotation and also allowed context to be None: commit 5dbb27fb50116da00fe9bc84e2a3e37e53dc0232 Author: Tim-Philipp Müller <tim.muller@collabora.co.uk> Date: Sat Feb 25 00:39:53 2012 +0000 pbutils: fix gst_install_plugins_{sync,async} g-i annotations the gir scanner doesn't use a sensible defaults for string array arguments, so we have to annotate it properly. https://bugzilla.gnome.org/show_bug.cgi?id=668343 Something to actually test/reproduce this properly (need to run main loop; need a plugin installer script, otherwise we just get a no-script error return right away without it even doing anything, at least in an uninstalled setup): from gi.repository import Gst from gi.repository import Gtk from gi.repository import GstPbutils from gi.repository import GObject import os Gst.init(None) GObject.threads_init() helper_bin='/tmp/dummy-plugin-install-helper.sh' f = file(helper_bin, "w") f.writelines(['#!/bin/sh\n', 'echo INSTALL: $*\n']) f.close() os.chmod(helper_bin, 0755) caps=Gst.Caps.from_string("application/mxf") missing = GstPbutils.missing_encoder_installer_detail_new(caps) def donemessage(result, data): print "done!!!", result Gtk.main_quit() os.environ['GST_INSTALL_PLUGINS_HELPER'] = helper_bin GstPbutils.install_plugins_async ([ missing ], None, donemessage, None) Gtk.main()