blur-my-shell icon indicating copy to clipboard operation
blur-my-shell copied to clipboard

Fix `Main.panel` crash on log out

Open marmitar opened this issue 3 months ago • 0 comments

  • Added a listener for destroy, so that Main.panel is not called after that event.
  • Added protections against reentrancy for enable(), disable() and reset() methods.
  • Fixes #782.
  • Ensure actors are destroyed in CoverflowAltTabBlur.

Here are the logs after this change:

Debug Logs
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > extension]    enabling extension...
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > lockscreen]   blurring lockscreen
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > extension]    changing mode to user session...
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > overview]     blurring overview
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > dash manager] searching for dash
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > panel]        blurring top panel
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > panel]        resetting...
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > panel]        removing blur from top panel
set 07 00:13:57 marmis-arch gnome-shell[39106]: [Blur my Shell > panel]        blurring top panel
set 07 00:13:58 marmis-arch gnome-shell[39106]: [Blur my Shell > appfolders]   blurring appfolders
set 07 00:13:58 marmis-arch gnome-shell[39106]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:13:58 marmis-arch gnome-shell[39106]: [Blur my Shell > window list]  blurring window list
set 07 00:13:58 marmis-arch gnome-shell[39106]: [Blur my Shell > coverflow alt-tab]  blurring coverflow alt-tab
set 07 00:13:58 marmis-arch gnome-shell[39106]: [Blur my Shell > screenshot]   blurring screenshot's window selector
set 07 00:13:58 marmis-arch gnome-shell[39106]: [Blur my Shell > extension]    all components enabled.
set 07 00:14:06 marmis-arch gnome-shell[39106]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:06 marmis-arch gnome-shell[39106]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:07 marmis-arch gnome-shell[39106]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:07 marmis-arch gnome-shell[39106]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:17 marmis-arch gnome-shell[39106]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:30 marmis-arch gnome-shell[39106]: [Blur my Shell > panel]        cannot update light text classname, Main.panel is not alive
set 07 00:14:41 marmis-arch gnome-shell[40963]: [Blur my Shell > extension]    enabling extension...
set 07 00:14:41 marmis-arch gnome-shell[40963]: [Blur my Shell > lockscreen]   blurring lockscreen
set 07 00:14:41 marmis-arch gnome-shell[40963]: [Blur my Shell > extension]    changing mode to user session...
set 07 00:14:41 marmis-arch gnome-shell[40963]: [Blur my Shell > overview]     blurring overview
set 07 00:14:41 marmis-arch gnome-shell[40963]: [Blur my Shell > dash manager] searching for dash
set 07 00:14:41 marmis-arch gnome-shell[40963]: [Blur my Shell > panel]        blurring top panel
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > panel]        resetting...
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > panel]        removing blur from top panel
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > panel]        blurring top panel
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > appfolders]   blurring appfolders
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > window list]  blurring window list
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > coverflow alt-tab]  blurring coverflow alt-tab
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > screenshot]   blurring screenshot's window selector
set 07 00:14:42 marmis-arch gnome-shell[40963]: [Blur my Shell > extension]    all components enabled.
set 07 00:14:50 marmis-arch gnome-shell[40963]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:50 marmis-arch gnome-shell[40963]: [Blur my Shell > appfolders]   appfolders hack level 1
set 07 00:14:51 marmis-arch gnome-shell[40963]: [Blur my Shell > appfolders]   appfolders hack level 1

You can see in the logs "cannot update light text classname, Main.panel is not alive", so it still tries to update the Main.panel style, but the flag protects against it.

I also tried to make disable() run before Main.panel::destroy, but I don't think it's possible, at least not on GNOME 49.rc. The order of events on log out seems to be Main.panel::destroy => global.display::workareas-changed => Extension.disable.

marmitar avatar Sep 07 '25 03:09 marmitar