pop-os / gnome-shell

Pop!_OS fork of https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-shell
GNU General Public License v2.0
25 stars 4 forks source link

Can induce a desktop "lockup" by spamming the Super key repeatedly #112

Open leviport opened 2 years ago

leviport commented 2 years ago

(1) Issue/Bug Description: Hitting the Super key quickly and repeatedly (closes and opens the Launcher a bunch) sometimes locks up my desktop. Everything in my session appears to continue functioning (clock, audio, video, even mouse cursor movement), but no mouse clicks or keypresses do anything. I always see the current window overlay on one of my open windows when I get it stuck in this way.

I can get out of this state by adding a display, but not by removing a display. Turning one of my three displays off re-adjusts correctly to 2 displays, but it's still "stuck" afterwards. Turning the display back on re-adjusts to all 3 displays, and I can hit Esc to clear the current window overlay, then everything starts working as expected. Here's some log output that looks like it might be useful:

[levi@levioryx:~]$ journalctl -o cat -n 0 -f "$(which gnome-shell)" | grep -v warning | tee shellfreeze.txt
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_display_get_monitor_in_fullscreen: assertion 'monitor >= 0 && monitor < n_logical_monitors' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
meta_monitor_manager_get_logical_monitor_from_number: assertion '(unsigned int) number < g_list_length (manager->logical_monitors)' failed
meta_workspace_get_work_area_for_monitor: assertion 'logical_monitor != NULL' failed
Can't update stage views actor <unnamed>[<MetaWindowGroup>:0x56393f464330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254b140] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowGroup>:0x56393f464330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547f00] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254bbc0] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942546f40] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254adc0] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563946229ed0] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394260ea40] is on because it needs an allocation.
JS ERROR: TypeError: record is undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:81:13

JS ERROR: TypeError: record is undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:81:13

JS ERROR: TypeError: record is undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:81:13

Can't update stage views actor <unnamed>[<MetaWindowGroup>:0x56393f464330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547720] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254b4c0] is on because it needs an allocation.
JS ERROR: TypeError: record is undefined
_syncStacking@resource:///org/gnome/shell/ui/workspaceAnimation.js:81:13

gnome-shell-extension-system76-power: hotplug event detected
Can't update stage views actor <unnamed>[<MetaWindowGroup>:0x56393f464330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942546370] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254a340] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547b10] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254b840] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowGroup>:0x56393f464330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942546370] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254a340] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547b10] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254b840] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowGroup>:0x56393f464330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942546370] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254a340] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547720] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254b4c0] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowGroup>:0x56393f464330] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547b10] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254b840] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942546370] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254a340] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaWindowActorX11>:0x563942547720] is on because it needs an allocation.
Can't update stage views actor <unnamed>[<MetaSurfaceActorX11>:0x56394254b4c0] is on because it needs an alloca^C

(2) Steps to reproduce (if you know): With multiple displays connected and several windows open on both, spam the Super key (set to Launcher, just like the default). If I go slow, it sometimes doesn't happen. You have to spam it super fast.

(3) Expected behavior: Launcher closes and opens a bunch of times without it getting stuck.

(4) Distribution (run cat /etc/os-release):

NAME="Pop!_OS"
VERSION="22.04 LTS"
ID=pop
ID_LIKE="ubuntu debian"
PRETTY_NAME="Pop!_OS 22.04 LTS"
VERSION_ID="22.04"
HOME_URL="https://pop.system76.com"
SUPPORT_URL="https://support.system76.com"
BUG_REPORT_URL="https://github.com/pop-os/pop/issues"
PRIVACY_POLICY_URL="https://system76.com/privacy"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy
LOGO=distributor-logo-pop-os

(5) Gnome Shell version: 42.1

(6) Pop Shell version (run apt policy pop-shell or provide the latest commit if building locally):

pop-shell:
  Installed: 1.1.0~1653580316~22.04~42102e9
  Candidate: 1.1.0~1653580316~22.04~42102e9
  Version table:
 *** 1.1.0~1653580316~22.04~42102e9 1002
       1002 http://apt.pop-os.org/staging/master jammy/main amd64 Packages
       1002 http://apt.pop-os.org/staging/master jammy/main i386 Packages
        100 /var/lib/dpkg/status
     1.1.0~1652994129~22.04~0358b15 1001
       1001 http://apt.pop-os.org/release jammy/main amd64 Packages
       1001 http://apt.pop-os.org/release jammy/main i386 Packages

(7) Where was Pop Shell installed from: Repos

(8) Monitor Setup (2 x 1080p, 4K, Primary(Horizontal), Secondary(Vertical), etc): 1x 1080p on left in "Portrait Right" rotation, 1x 4k at 100% scaling in middle (landscape), and 1x 2560x1440 on right in "Portrait Left" rotation.

@brs17 also saw this on 2x 1080p monitors, both in Landscape mode, so I don't think it needs to be quite so exotic of a setup as I have.

(9) Other Installed/Enabled Extensions:

(10) Other Notes: Thanks to @brs17 for the initial report

brs17 commented 2 years ago

Thank you @leviport for writing this up.

To elaborate, my 2 x 1080p monitor setup is connected to a laptop with the lid closed. I was able to "unstick" the machine by opening the lid of the laptop.

vishesh-sarinDXB commented 2 years ago

I don't know if this is pop-shell specific, because I am able to reproduce even with the pop-shell disabled

Edit: Nevermind, if I disable pop-shell and restart gdm can't reproduce, so probably it is pop-shell specific

Edit2: Another weird thing, while super+mouse is specifically reproducible, I find that it can happen to me even without spamming

leviport commented 2 years ago

Update on this one -- it looks ilke the lockup bug when I spam the Super key is gone, but I can still get the current window overlay to show up after the launcher is closed. It will show up and disappear when I spam the key, but I can also get it to show up if I double-tap Super quick enough. The first tap opens the launcher, then the second tap puts the overlay on a seemingly arbitrary open window. The overlay goes away when I open the launcher again, so this is definitely much less serious of a problem.