material-shell icon indicating copy to clipboard operation
material-shell copied to clipboard

Gnome 40.1 crashes when enabling material-shell

Open arnarg opened this issue 4 years ago • 14 comments
trafficstars

Describe the bug I'm trying to enable material-shell (v40.a) on gnome 40.1 but every time it crashes gnome altogether. In order to figure out where in the code gnome was crashing I put log test probes all over the code and watch the journal for gnome-shell to see how far it got. This is the patch. Interestingly enough as I added more log statements it became harder to get gnome to crash, indicating (to me) that this might be some kind of race condition (as the log statements take some time). Sometimes the extension enabled just fine and sometimes gnome shell crashed but when restarting it material-shell would work. Without the logs there is no way to make material-shell work. With the patch I pasted above I get to Point 220 before it crashes, but it takes multiple tries of enabling and disabling it to actually get gnome shell to crash with all these test probes.

Expected behavior Material-shell should work just fine when I enable the extension on gnome 40.1

To Reproduce

  • Occurs on:
    • [ ] X.Org
    • [x] Wayland
  • GNOME Shell version: 3.40.1
  • Distro: NixOS Unstable
  • Steps to reproduce, if applicable:
  1. Build material-shell from tag 40.a
  2. Symlink ~/.local/share/gnome-shell/extensions/material-shell@papyelgringo to ./dist
  3. Log out and back in
  4. Enable extension
  5. Gnome crashes

Current commit Output from git rev-parse --short HEAD: ``f44335d

Log data Output from journalctl /usr/bin/gnome-shell -o cat:

This is without the log/debug patch

Adding device '/dev/dri/card0' (amdgpu) using atomic mode setting.
Boot VGA GPU /dev/dri/card0 selected as primary
Disabling DMA buffer screen sharing for driver 'amdgpu'.
Using public X11 display :0, (using :1 for managed services)
Using Wayland display name 'wayland-0'
Skipping parental controls support as it’s disabled
Unset XDG_SESSION_ID, getCurrentSessionProxy() called outside a user session. Asking logind directly.
Will monitor session 36
Failed to launch ibus-daemon: Failed to execute child process “ibus-daemon” (No such file or directory)
Failed to create file /run/user/1000/gnome-shell-disable-extensions: Error opening file “/run/user/1000/gnome-shell-disable-extensions”: File exists
Error looking up permission: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for geolocation
No permission to trigger offline updates: Polkit.Error: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Failed to launch ibus-daemon: Failed to execute child process “ibus-daemon” (No such file or directory)
ATK Bridge is disabled but a11y has already been enabled.
GNOME Shell started at Sun Jun 06 2021 16:09:04 GMT+0200 (CEST)
Registering session with GDM
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Error checking authorization for action id org.freedesktop.packagekit.trigger-offline-update: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Action org.freedesktop.packagekit.trigger-offline-update is not registered
Object .MetaInputDeviceNative (0x7f03440f3750), has been already deallocated — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
clutter_input_device_get_device_type: assertion 'CLUTTER_IS_INPUT_DEVICE (device)' failed
== Stack trace for context 0x2207170 ==
#0        3e6eec8 i   resource:///org/gnome/shell/ui/keyboard.js:1209 (d97086ac2e0 @ 57)
#1        3e6ee18 i   resource:///org/gnome/shell/ui/keyboard.js:1215 (d97086ac290 @ 94)
#2   7fff9c0f7af0 b   self-hosted:850 (1d8d4b823920 @ 454)
WARNING: addSignalMethods is replacing existing [object Object] connect method
WARNING: addSignalMethods is replacing existing [object Object] disconnect method
WARNING: addSignalMethods is replacing existing [object Object] emit method
Some code accessed the property 'ENABLED_EXTENSIONS_KEY' on the module 'extensionSystem'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
--------------
INIT EXTENSION
--------------
----------------
ENABLE EXTENSION
----------------

arnarg avatar Jun 06 '21 14:06 arnarg

Is there any less crude way of debugging what exactly might be causing this issue?

arnarg avatar Jun 06 '21 14:06 arnarg

Any other extensions enabled?

PapyElGringo avatar Jun 07 '21 09:06 PapyElGringo

No.

arnarg avatar Jun 07 '21 09:06 arnarg

3.40.1 isn't a valid gnome version but I don't think it's related

PapyElGringo avatar Jun 07 '21 10:06 PapyElGringo

Could you get the coredump stack?

PapyElGringo avatar Jun 07 '21 10:06 PapyElGringo

3.40.1 isn't a valid gnome version but I don't think it's related

I just appended whatever I got from gnome-shell --version to the 3 to be honest.

Could you get the coredump stack?

I did not attempt this. I will try it later today. What would be the best way of doing this?

arnarg avatar Jun 07 '21 10:06 arnarg

coredumpctl -1 debug

PapyElGringo avatar Jun 07 '21 11:06 PapyElGringo

Here is something I managed to get. coredump.txt

           PID: 77958 (.gnome-shell-wr)
           UID: 1000 (arnar)
           GID: 1000 (arnar)
        Signal: 11 (SEGV)
     Timestamp: Mon 2021-06-07 13:54:53 CEST (1min 19s ago)
  Command Line: /nix/store/cla833lsr5hb9hp7f39p89wxpn145bkd-gnome-shell-40.1/bin/gnome-shell
    Executable: /nix/store/cla833lsr5hb9hp7f39p89wxpn145bkd-gnome-shell-40.1/bin/.gnome-shell-wrapped
 Control Group: /user.slice/user-1000.slice/[email protected]/session.slice/[email protected]
          Unit: [email protected]
     User Unit: [email protected]
         Slice: user-1000.slice
     Owner UID: 1000 (arnar)
       Boot ID: c7161c87965c46eb95e3638aa074b0bd
    Machine ID: 24e95f655e544ab38acb2b1210e1a78d
      Hostname: flex
       Storage: /var/lib/systemd/coredump/core.\x2egnome-shell-wr.1000.c7161c87965c46eb95e3638aa074b0bd.77958.1623066893000000.lz4
       Message: Process 77958 (.gnome-shell-wr) of user 1000 dumped core.

GNU gdb (GDB) 10.2
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /nix/store/cla833lsr5hb9hp7f39p89wxpn145bkd-gnome-shell-40.1/bin/.gnome-shell-wrapped...
(No debugging symbols found in /nix/store/cla833lsr5hb9hp7f39p89wxpn145bkd-gnome-shell-40.1/bin/.gnome-shell-wrapped)
[New LWP 77958]
[New LWP 77962]
[New LWP 77984]
[New LWP 77983]
[New LWP 78021]
[New LWP 77982]
[New LWP 77965]
[New LWP 77999]
[New LWP 77995]
[New LWP 78345]
[New LWP 77990]
[New LWP 78022]
[New LWP 78027]
[New LWP 77985]
[New LWP 77991]
[New LWP 77964]
[New LWP 77988]
[New LWP 77989]
[New LWP 78026]
[New LWP 77993]
[New LWP 77992]
[New LWP 77981]
[New LWP 77987]
[New LWP 78000]
[New LWP 78023]
[New LWP 78025]
[New LWP 77986]
[New LWP 78020]
[New LWP 77994]
[New LWP 77996]
[New LWP 78024]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/nix/store/sbbifs2ykc05inws26203h0xwcadnf0l-glibc-2.32-46/lib/libthread_db.so.1".
Core was generated by `/nix/store/cla833lsr5hb9hp7f39p89wxpn145bkd-gnome-shell-40.1/bin/gnome-shell'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f5ed96276b7 in js::jit::JitScript::MonitorBytecodeType(JSContext*, JSScript*, unsigned char*, js::StackTypeSet*, JS::Value const&) () from /nix/store/5408l01zjwfdq7sph18zlx7h6744vj5h-spidermonkey-78.8.0/lib/libmozjs-78.so
[Current thread is 1 (Thread 0x7f5ed378b2c0 (LWP 77958))]
[?2004h(gdb) q
[?2004l

arnarg avatar Jun 07 '21 12:06 arnarg

Gnome crashes for me every time I try to enable material-shell using the NixOS 21.05/Gnome 40.1/X.Org/https://github.com/material-shell/material-shell/commit/fa59ef898a2eed88259b64558eb2d4f837cdc267, but it works with @arnarg logging patch applied :eyes: :see_no_evil:

gsnewmark avatar Jun 08 '21 11:06 gsnewmark

yep, same here on my NixOS System.

VanCoding avatar Jun 10 '21 20:06 VanCoding

Yep.

❯ nixos-version 
21.05.1105.6613a30c5e3 (Okapi)

~ 
❯ gnome-shell --version
GNOME Shell 40.1

I dunno, at this point it seems like the blame might lie with NixOS.

SapphicCode avatar Jul 06 '21 08:07 SapphicCode

Confirmed on nixos 21.05.3367.fd8a7fd07da (Okapi) & GNOME Shell 40.1 Anyway I can help debug this issue? @arnarg The link to your logging patches seems dead, could you reupload those?

matesitox avatar Sep 29 '21 10:09 matesitox

Same here but I'm on X11 so that rules some stuff out.

gilescope avatar May 24 '22 18:05 gilescope

I have this issue on 22.05.2065.9370544d849 (Quokka), Gnome Shell 42.3.1 Wayland. I would love to help depugging but someone has to point me in the right direction as I'm quite new to NixOS

Gistbatch avatar Aug 11 '22 12:08 Gistbatch