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 742279 - clutter-gst 3.0 gstreamer plugin breaks gst-inspect for non-Desktop users
clutter-gst 3.0 gstreamer plugin breaks gst-inspect for non-Desktop users
Status: RESOLVED FIXED
Product: clutter-gst
Classification: Other
Component: general
3.0.x
Other FreeBSD
: Normal major
: ---
Assigned To: clutter-gst-maint
clutter-gst-maint
Depends on:
Blocks:
 
 
Reported: 2015-01-03 21:04 UTC by Koop Mast (kwm)
Modified: 2015-01-15 10:11 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Check clutter initialization status is successfull (1.02 KB, patch)
2015-01-05 13:22 UTC, Koop Mast (kwm)
none Details | Review

Description Koop Mast (kwm) 2015-01-03 21:04:11 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.
  • #0 cogl_has_feature
    at ./cogl.c line 215
  • #0 cogl_has_feature
    at ./cogl.c line 215
  • #1 ??
    from /usr/local/lib/libclutter-gst-3.0.so.0
  • #2 g_type_create_instance
    at gtype.c line 1870
  • #3 g_object_new_internal
    at gobject.c line 1774
  • #4 g_object_newv
    at gobject.c line 1922
  • #5 g_object_new
    at gobject.c line 1614
  • #6 ??
    from /usr/local/lib/gstreamer-1.0/libgstclutter-3.0.so
  • #7 type_class_init_Wm
    at gtype.c line 2236
  • #8 g_type_class_ref
    at gtype.c line 2951
  • #9 gst_element_register
    at gstelementfactory.c line 243
  • #10 ??
    from /usr/local/lib/gstreamer-1.0/libgstclutter-3.0.so
  • #11 gst_plugin_register_func
    at gstplugin.c line 522
  • #12 gst_plugin_load_file
    at gstplugin.c line 817
  • #13 gst_registry_scan_plugin_file
    at gstregistry.c line 1180
  • #14 gst_registry_scan_path_level
    at gstregistry.c line 1345
  • #15 gst_registry_scan_path_internal
    at gstregistry.c line 1364
  • #16 scan_and_update_registry
    at gstregistry.c line 1659
  • #17 ensure_current_registry
    at gstregistry.c line 1751
  • #18 gst_update_registry
    at gstregistry.c line 1827
  • #19 init_post
  • #20 g_option_context_parse
    at goption.c line 2153
  • #21 main
    at gst-inspect.c line 1496
            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
Comment 1 Lionel Landwerlin 2015-01-04 23:39:53 UTC
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.
Comment 2 Koop Mast (kwm) 2015-01-05 13:22:10 UTC
Reopen
Comment 3 Koop Mast (kwm) 2015-01-05 13:22:58 UTC
Created attachment 293818 [details] [review]
Check clutter initialization status is successfull
Comment 4 Lionel Landwerlin 2015-01-05 13:29:56 UTC
Right, thanks for that.
Pushed a different patch as there was another condition to update.
Comment 5 Ting-Wei Lan 2015-01-14 14:52:34 UTC
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.
Comment 6 Lionel Landwerlin 2015-01-14 15:29:34 UTC
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.
Comment 7 Ting-Wei Lan 2015-01-14 15:34:13 UTC
It should be a ClutterGst 3.0 bug. It happens on cogl, clutter-gst 2.0, clutter-gst 3.0.
Comment 8 Lionel Landwerlin 2015-01-14 15:36:27 UTC
Are seeing this problem when compiling ClutterGst 3.0?
Comment 9 Ting-Wei Lan 2015-01-14 15:40:10 UTC
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.
Comment 10 Lionel Landwerlin 2015-01-14 16:21:52 UTC
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?
Comment 11 Ting-Wei Lan 2015-01-14 16:32:59 UTC
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
Comment 12 Lionel Landwerlin 2015-01-14 17:42:07 UTC
I don't think that's the same problem that was initially reported and definitely  not related to ClutterGst.
Comment 13 Emmanuele Bassi (:ebassi) 2015-01-14 17:55:37 UTC
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.
Comment 14 Emmanuele Bassi (:ebassi) 2015-01-14 17:59:22 UTC
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
}
"""
Comment 15 Ting-Wei Lan 2015-01-15 09:28:11 UTC
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.
Comment 16 Lionel Landwerlin 2015-01-15 09:29:35 UTC
If you mean clutter-gst-2.0 yes, I'll push it soon.
Comment 17 Ting-Wei Lan 2015-01-15 09:49:06 UTC
Can it also be pushed to clutter-gst-3.0?
Comment 18 Lionel Landwerlin 2015-01-15 09:50:14 UTC
The commit you're pointing at is already on the clutter-gst-3.0 branch.
Comment 19 Ting-Wei Lan 2015-01-15 09:51:30 UTC
I set the breakpoint on the "Unable to init server" message now. Here is the backtrace:

  • #0 write
    from /lib/libc.so.7
  • #1 ??
    from /lib/libc.so.7
  • #2 ??
    from /lib/libc.so.7
  • #3 fputs
    from /lib/libc.so.7
  • #4 g_printerr
    at gmessages.c line 1603
  • #5 _gdk_broadway_display_open
    at gdkdisplay-broadway.c line 158
  • #6 gdk_display_manager_open_display
    at gdkdisplaymanager.c line 463
  • #7 gdk_display_open_default
    at gdk.c line 440
  • #8 gdk_init_check
    at gdk.c line 488
  • #9 _clutter_backend_gdk_post_parse
    at gdk/clutter-backend-gdk.c line 168
  • #10 _clutter_backend_post_parse
    at clutter-backend.c line 765
  • #11 clutter_init_real
    at clutter-main.c line 1430
  • #12 post_parse_hook
    at clutter-main.c line 1661
  • #13 g_option_context_parse
    at goption.c line 2163
  • #14 clutter_parse_args
    at clutter-main.c line 1897
  • #15 clutter_init
    at clutter-main.c line 1959
  • #16 clutter_gst_init
    at ./clutter-gst-util.c line 140
  • #17 main

Comment 20 Ting-Wei Lan 2015-01-15 09:57:34 UTC
(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?
Comment 21 Emmanuele Bassi (:ebassi) 2015-01-15 10:08:05 UTC
(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.
Comment 22 Lionel Landwerlin 2015-01-15 10:11:34 UTC
(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.