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 776041 - EasyScreenCast extension causes frozen login on Wayland, needs core dev debugging skills
EasyScreenCast extension causes frozen login on Wayland, needs core dev debug...
Status: RESOLVED OBSOLETE
Product: gnome-shell
Classification: Core
Component: general
3.22.x
Other Linux
: Normal normal
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
: 777059 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2016-12-13 11:40 UTC by Kamil Páral
Modified: 2021-07-05 14:42 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Kamil Páral 2016-12-13 11:40:06 UTC
The EasyScreenCast extension [1] causes a frozen login screen for Wayland session every(?) time the gstreamer cache [2] is touched. A simple reproducer is provided in:
https://bugzilla.redhat.com/show_bug.cgi?id=1394755#c22
(A journal snippet is provided in comment 0.)

I understand you'll want to say "this is the extension problem, not ours", but I believe this needs a core gnome-shell dev attention, because extension authors are not likely to be able to debug this. This only happens for Wayland sessions, not X11, which indicates it could be a problem in gnome-shell itself. It can also be a problem in gstreamer, in which case it would be great if you could provide a reproducer (methods called) which I could then provide to gstreamer developers.

Also, it would be great if gnome-shell could somehow safeguard against such issues in the future, to disable the extension and continue, instead of showing just a frozen screen.

Moreover, this extension is quite popular for QA, so fixing this helps us file better bug reports in the future. That's my closing pitch :-) Thanks.

gnome-shell-3.22.2-2.fc25.x86_64
EasyScreenCast@iacopodeenosee.gmail.com version 34

[1] https://extensions.gnome.org/extension/690/easyscreencast/
[2] ~/.cache/gstreamer-1.0/registry.x86_64.bin
Comment 1 Rui Matos 2016-12-13 15:34:34 UTC
This is a deadlock caused by gst_init() in the compositor process refreshing the registry and the forked gst-plugin-scanner process loading all plugins. In particular libgstclutter initializes clutter which by default initializes its gdk backend which by default opens a wayland client connection and... deadlock.

The gnome-shell extension triggers this because it does Gst.init() on startup, but even without the extension it can be easily reproduced by deleting the gstreamer cache file, starting a wayland gnome session and entering imports.gi.Gst.init(null) on gnome-shell's looking glass (Alt+F2, "lg") or just starting a normal recording with the default keybinding ctrl+alt+shift+R .

The only sane way forward is to stop using gstreamer in the compositor which is in the plans.

For the record, the deadlocked stack traces are:

gnome-shell process:

  • #0 ppoll
    from /lib64/libc.so.6
  • #1 ppoll
    at /usr/include/bits/poll2.h line 77
  • #2 gst_poll_wait
    at gstpoll.c line 1369
  • #3 exchange_packets
    at gstpluginloader.c line 1017
  • #4 plugin_loader_free
    at gstpluginloader.c line 182
  • #5 clear_scan_context
    at gstregistry.c line 1144
  • #6 scan_and_update_registry
    at gstregistry.c line 1689
  • #7 ensure_current_registry
    at gstregistry.c line 1767
  • #8 gst_update_registry
    at gstregistry.c line 1843
  • #9 init_post
    at gst.c line 716
  • #10 g_option_context_parse
    at goption.c line 2165
  • #11 gst_init_check
    at gst.c line 353
  • #12 gst_init
    at gst.c line 399
  • #13 ffi_call_unix64
    from /lib64/libffi.so.6
  • #14 ffi_call
    from /lib64/libffi.so.6
  • #0 poll
    from /lib64/libc.so.6
  • #1 wl_display_poll
    at src/wayland-client.c line 1593
  • #2 wl_display_dispatch_queue
    at src/wayland-client.c line 1666
  • #3 wl_display_dispatch
    at src/wayland-client.c line 1741
  • #4 _gdk_wayland_display_open
    at gdkdisplay-wayland.c line 554
  • #5 gdk_display_manager_open_display
    at gdkdisplaymanager.c line 472
  • #6 gdk_display_open
    at gdkdisplay.c line 1966
  • #7 gdk_display_open_default
    at gdk.c line 466
  • #8 gdk_init_check
    at gdk.c line 514
  • #9 _clutter_backend_gdk_post_parse
    from /lib64/libclutter-1.0.so.0
  • #10 clutter_init_real
    from /lib64/libclutter-1.0.so.0
  • #11 post_parse_hook
    from /lib64/libclutter-1.0.so.0
  • #12 g_option_context_parse
    at goption.c line 2175
  • #13 clutter_init
    from /lib64/libclutter-1.0.so.0
  • #14 plugin_init
    from /usr/lib64/gstreamer-1.0/libgstclutter.so
  • #15 gst_plugin_register_func
    at gstplugin.c line 523
  • #16 _priv_gst_plugin_load_file_for_registry
    at gstplugin.c line 826
  • #17 gst_plugin_load_file
    at gstplugin.c line 680
  • #18 do_plugin_load
    at gstpluginloader.c line 727
  • #19 handle_rx_packet
    at gstpluginloader.c line 835
  • #20 read_one
    at gstpluginloader.c line 1005
  • #21 exchange_packets
    at gstpluginloader.c line 1033
  • #22 _gst_plugin_loader_client_run
    at gstpluginloader.c line 582
  • #23 main
    at gst-plugin-scanner.c line 60

Comment 2 Rui Matos 2016-12-13 15:37:16 UTC
[ the stack traces again, trying to work around bugzilla's pretty printer ]

===================
gnome-shell process
===================

  • #0 ppoll
    from /lib64/libc.so.6
  • #1 ppoll
    at /usr/include/bits/poll2.h line 77
  • #2 gst_poll_wait
    at gstpoll.c line 1369
  • #3 exchange_packets
    at gstpluginloader.c line 1017
  • #4 plugin_loader_free
    at gstpluginloader.c line 182
  • #5 clear_scan_context
    at gstregistry.c line 1144
  • #6 scan_and_update_registry
    at gstregistry.c line 1689
  • #7 ensure_current_registry
    at gstregistry.c line 1767
  • #8 gst_update_registry
    at gstregistry.c line 1843
  • #9 init_post
    at gst.c line 716
  • #10 g_option_context_parse
    at goption.c line 2165
  • #11 gst_init_check
    at gst.c line 353
  • #12 gst_init
    at gst.c line 399
  • #13 ffi_call_unix64
    from /lib64/libffi.so.6
  • #14 ffi_call
    from /lib64/libffi.so.6
  • #0 poll
    from /lib64/libc.so.6
  • #1 wl_display_poll
    at src/wayland-client.c line 1593
  • #2 wl_display_dispatch_queue
    at src/wayland-client.c line 1666
  • #3 wl_display_dispatch
    at src/wayland-client.c line 1741
  • #4 _gdk_wayland_display_open
    at gdkdisplay-wayland.c line 554
  • #5 gdk_display_manager_open_display
    at gdkdisplaymanager.c line 472
  • #6 gdk_display_open
    at gdkdisplay.c line 1966
  • #7 gdk_display_open_default
    at gdk.c line 466
  • #8 gdk_init_check
    at gdk.c line 514
  • #9 _clutter_backend_gdk_post_parse
    from /lib64/libclutter-1.0.so.0
  • #10 clutter_init_real
    from /lib64/libclutter-1.0.so.0
  • #11 post_parse_hook
    from /lib64/libclutter-1.0.so.0
  • #12 g_option_context_parse
    at goption.c line 2175
  • #13 clutter_init
    from /lib64/libclutter-1.0.so.0
  • #14 plugin_init
    from /usr/lib64/gstreamer-1.0/libgstclutter.so
  • #15 gst_plugin_register_func
    at gstplugin.c line 523
  • #16 _priv_gst_plugin_load_file_for_registry
    at gstplugin.c line 826
  • #17 gst_plugin_load_file
    at gstplugin.c line 680
  • #18 do_plugin_load
    at gstpluginloader.c line 727
  • #19 handle_rx_packet
    at gstpluginloader.c line 835
  • #20 read_one
    at gstpluginloader.c line 1005
  • #21 exchange_packets
    at gstpluginloader.c line 1033
  • #22 _gst_plugin_loader_client_run
    at gstpluginloader.c line 582
  • #23 main
    at gst-plugin-scanner.c line 60

Comment 3 Rui Matos 2016-12-13 15:37:53 UTC
[ *sigh*, I give up, it's not that important either ]
Comment 4 Kamil Páral 2016-12-14 08:44:17 UTC
Thanks a lot, Rui, for debugging this. Is there any recommendation I can give to EasyScreenCast authors in the meantime to work around this? Can they call gst_init() later, and at what point?
Comment 5 Tobias Schönberg 2017-07-08 08:33:16 UTC
A possible solution to the issue is in this merge request. Sanity checks and testing would be greatly appreciated: https://github.com/EasyScreenCast/EasyScreenCast/pull/148
Comment 6 Francisco de la Peña 2017-07-10 00:13:51 UTC
*** Bug 777059 has been marked as a duplicate of this bug. ***
Comment 7 GNOME Infrastructure Team 2021-07-05 14:42:12 UTC
GNOME is going to shut down bugzilla.gnome.org in favor of  gitlab.gnome.org.
As part of that, we are mass-closing older open tickets in bugzilla.gnome.org
which have not seen updates for a longer time (resources are unfortunately
quite limited so not every ticket can get handled).

If you can still reproduce the situation described in this ticket in a recent
and supported software version, then please follow
  https://wiki.gnome.org/GettingInTouch/BugReportingGuidelines
and create a new ticket at
  https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/

Thank you for your understanding and your help.