GNOME Bugzilla – Bug 742279
clutter-gst 3.0 gstreamer plugin breaks gst-inspect for non-Desktop users
Last modified: 2015-01-15 10:11:34 UTC
I presume this is a Clutter-gst issue, but if it a issue in Gstreamer please reassign the bug. The problem is that a number configure scripts use gst-inspect to find out if gstreamer plugins/elements are present on the system, Totem does this for one. Running gst-inspect without a desktop running gives a clutter Critical warning. This happens with either clutter-gst 2.0 or 3.0. Although with 2.0 gst-inspect continues on so it kind of works correctly. But with clutter-gst 3.0 something causes gst-inspect to hang or crash when debug flags are given. This is really a problem since package builders don't have a desktop running to avert this issue. Below is gst-inspect output of clutter-gst 2.0 and 3.0 and the backtrace from the gst-inspect crash. ------------- only clutter-gst 2.0 installed: # gst-inspect-1.0 videoscale (gst-plugin-scanner:62667): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to open display. You have to set the DISPLAY environment variable, or use the --display command line argument <normal gst-inspect-1.0 output) ------------- only clutter-gst 3.0 installed: # gst-inspect-1.0 videoscale (gst-plugin-scanner:68358): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to open display. You have to set the DISPLAY environment variable, or use the --display command line argument (gst-plugin-scanner:68358): Clutter-Gst-CRITICAL **: Unable to initialize Clutter ERROR: Caught a segmentation fault while loading plugin file: /usr/local/lib/gstreamer-1.0/libgstclutter-3.0.so Please either: - remove it and restart. - run with --gst-disable-segtrap --gst-disable-registry-fork and debug. <gst-inspect-1.0 hangs> ------------- Running gst-inspect-1.0 with the debug flags: # gst-inspect-1.0 --gst-disable-segtrap --gst-disable-registry-fork videoscale (gst-inspect-1.0:68376): Clutter-CRITICAL **: Unable to initialize Clutter: Unable to open display. You have to set the DISPLAY environment variable, or use the --display command line argument (gst-inspect-1.0:68376): Clutter-Gst-CRITICAL **: Unable to initialize Clutter Segmentation fault (core dumped) ------------- Core was generated by `gst-inspect-1.0'. Program terminated with signal SIGSEGV, Segmentation fault.
+ Trace 234492
long_name = 0x409d9d "print-blacklist", short_name = 98 'b', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffead0, description = 0x409dad "Print list of blacklisted files", arg_description = 0x0}, { long_name = 0x409dcd "print-plugin-auto-install-info", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffeac8, description = 0x409dec "Print a machine-parsable list of features the specified plugin or all plugins provide.\n", ' ' <repeats 39 times>, "Useful in connection with external automatic plugin installation mechanism"..., arg_description = 0x0}, {long_name = 0x40af57 "plugin", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffeacc, description = 0x409eb6 "List the plugin contents", arg_description = 0x0}, { long_name = 0x409ef8 "exists", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffeac0, description = 0x409ecf "Check if the specified element or plugin exists", arg_description = 0x0}, {long_name = 0x409eff "atleast-version", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_STRING, arg_data = 0x7fffffffeab8, description = 0x409f0f "When checking if an element or plugin exists, also check that its version is at least the version specified", arg_description = 0x0}, { long_name = 0x409f7b "uri-handlers", short_name = 117 'u', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffeac4, description = 0x409f88 "Print supported URI schemes, with the elements that implement them", arg_description = 0x0}, {long_name = 0x409f07 "version", short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x60be78 <__gst_tools_version>, description = 0x409fcb "Print version information and exit", arg_description = 0x0}, { ---Type <return> to continue, or q <return> to quit--- long_name = 0x0, short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, arg_description = 0x0}} ctx = 0x802c4e340 err = 0x0
Thanks! Hopefully it's fixed with https://git.gnome.org/browse/clutter-gst/commit/?id=1fbb2b1fcc7e945fcd7bfd1c5afa15a501976c35, if not, feel free to reopen. I'll make a release by the end of the week.
Reopen
Created attachment 293818 [details] [review] Check clutter initialization status is successfull
Right, thanks for that. Pushed a different patch as there was another condition to update.
It hangs when running g-ir-scanner now ... GEN ClutterGst-2.0.gir Unable to init server: Could not connect: Abstract UNIX domain socket addresses not supported on this system (gst-plugin-scanner:25985): GLib-CRITICAL **: g_propagate_error: assertion 'src != NULL' failed ERROR: Caught a segmentation fault while loading plugin file: /home/lantw44/gnome/devinstall/lib/gstreamer-1.0/libgstclutter-3.0.so Please either: - remove it and restart. - run with --gst-disable-segtrap --gst-disable-registry-fork and debug.
This is a bug for ClutterGst 3.0. It looks like you're compiling ClutterGst 2.0. Could you please open another bug for this.
It should be a ClutterGst 3.0 bug. It happens on cogl, clutter-gst 2.0, clutter-gst 3.0.
Are seeing this problem when compiling ClutterGst 3.0?
The same problem (with the same message) happens on cogl, clutter-gst 2.0, clutter-gst 3.0 when not running X. GEN ClutterGst-3.0.gir Unable to init server: Could not connect: Abstract UNIX domain socket addresses not supported on this system (gst-plugin-scanner:29769): GLib-CRITICAL **: g_propagate_error: assertion 'src != NULL' failed ERROR: Caught a segmentation fault while loading plugin file: /home/lantw44/gnome/devinstall/lib/gstreamer-1.0/libgstclutter-3.0.so Please either: - remove it and restart. - run with --gst-disable-segtrap --gst-disable-registry-fork and debug.
I believed this was fixed yesterday : https://git.gnome.org/browse/clutter-gst/commit/?h=clutter-gst-3.0&id=bacfeb3fdf1dbd802f189dd90b8d895d7d6194ed Could you try with this patch?
I uninstalled the installed version of clutter-gst 3.0 and applied the patch, but it still failed: GEN ClutterGst-3.0.gir Unable to init server: Could not connect: Abstract UNIX domain socket addresses not supported on this system (<unknown>:37104): GLib-CRITICAL **: g_propagate_error: assertion 'src != NULL' failed Command '['/home/lantw44/gnome/source/clutter-gst3/clutter-gst/tmp-introspectnUFpCA/ClutterGst-3.0', '--introspect-dump=/home/lantw44/gnome/source/clutter-gst3/clutter-gst/tmp-introspectnUFpCA/functions.txt,/home/lantw44/gnome/source/clutter-gst3/clutter-gst/tmp-introspectnUFpCA/dump.xml']' returned non-zero exit status -11
I don't think that's the same problem that was initially reported and definitely not related to ClutterGst.
the error: """ Unable to init server: Could not connect: Abstract UNIX domain socket addresses not supported on this system """ comes from the Broadway GDK backend. I don't know from where the GLib-Critical on g_propagate_error() is coming from — definitely not clutter-gst, since it's not used anywhere in the code base.
also, the fact that the Broadway backend fails with missing support for abstract UNIX domain socket addresses seems highly suspicious. it seems that g_unix_socket_address_abstract_names_supported() is implemented as: """ gboolean g_unix_socket_address_abstract_names_supported (void) { #ifdef __linux__ return TRUE; #else return FALSE; #endif } """
Can the patch https://git.gnome.org/browse/clutter-gst/commit/?h=clutter-gst-3.0&id=bacfeb3fdf1dbd802f189dd90b8d895d7d6194ed be pushed to clutter-gst-3.0 branch? I don't see it there.
If you mean clutter-gst-2.0 yes, I'll push it soon.
Can it also be pushed to clutter-gst-3.0?
The commit you're pointing at is already on the clutter-gst-3.0 branch.
I set the breakpoint on the "Unable to init server" message now. Here is the backtrace:
+ Trace 234552
(In reply to comment #18) > The commit you're pointing at is already on the clutter-gst-3.0 branch. I find I am on the master branch ... Can we get it there?
(In reply to comment #19) > I set the breakpoint on the "Unable to init server" message now. yup: something asks Clutter to initialize itself, and since now the GDK backend is the default, it'll try to initialize GDK, which in turn it'll try the Broadway backend, which will fail. this would have happened pretty much in the same way with the X11 backend, only you would see the "Unable to open display. You have to set the DISPLAY environment variable, or use the --display command line argument" message.
(In reply to comment #20) > (In reply to comment #18) > > The commit you're pointing at is already on the clutter-gst-3.0 branch. > > I find I am on the master branch ... Can we get it there? Done.