Skip to content

TypeError: this.panelWidget is null on suspend #377

Description

@matthijskooijman

I've noticed the hamster extension disappearing a couple time over the last weeks. Yesterday this happened again, and I caught the following in the logs:

Mar 23 14:02:24 zozo gnome-shell[7334]: Source ID 2823 was not found when attempting to remove it
Mar 23 14:02:24 zozo gnome-shell[7334]: clutter_actor_remove_child: assertion 'child->priv->parent == self' failed
Mar 23 14:02:24 zozo gnome-shell[7334]: Window manager warning: Trying to remove non-existent keybinding "show-hamster-dropdown".
Mar 23 14:02:24 zozo gnome-shell[7334]: Shutting down hamster-shell-extension.
Mar 23 14:02:24 zozo gnome-shell[7334]: Extension contact@projecthamster.org: TypeError: this.panelWidget is null
                                        
                                        Stack trace:
                                          _removeWidget@file:///home/matthijs/.local/share/gnome-shell/extensions/contact@projecthamster.org/extension.js:278:47
                                          disable@file:///home/matthijs/.local/share/gnome-shell/extensions/contact@projecthamster.org/extension.js:191:14
                                          _callExtensionDisable@resource:///org/gnome/shell/ui/extensionSystem.js:216:32
                                          _onEnabledExtensionsChanged@resource:///org/gnome/shell/ui/extensionSystem.js:642:24
                                          async*_sessionUpdated@resource:///org/gnome/shell/ui/extensionSystem.js:833:20
                                          ExtensionManager/<@resource:///org/gnome/shell/ui/extensionSystem.js:47:18
                                          _callHandlers@resource:///org/gnome/gjs/modules/core/_signals.js:130:42
                                          _emit@resource:///org/gnome/gjs/modules/core/_signals.js:119:10
                                          _sync@resource:///org/gnome/shell/ui/sessionMode.js:209:14
                                          pushMode@resource:///org/gnome/shell/ui/sessionMode.js:171:14
                                          activate@resource:///org/gnome/shell/ui/screenShield.js:659:34
                                          lock@resource:///org/gnome/shell/ui/screenShield.js:726:14
                                          _prepareForSleep@resource:///org/gnome/shell/ui/screenShield.js:292:22
                                          _callHandlers@resource:///org/gnome/gjs/modules/core/_signals.js:130:42
                                          _emit@resource:///org/gnome/gjs/modules/core/_signals.js:119:10
                                          _prepareForSleep@resource:///org/gnome/shell/misc/loginManager.js:212:14
                                          _callHandlers@resource:///org/gnome/gjs/modules/core/_signals.js:130:42
                                          _emit@resource:///org/gnome/gjs/modules/core/_signals.js:119:10
                                          _convertToNativeSignal@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:152:19
                                          @resource:///org/gnome/shell/ui/init.js:21:20
                                          

I am not sure if the first two entries are related, they might be from something else.

The above was logged directly after a system suspend was initiated. I recall that doing a screen lock disables all extensions, so likely hamster is being disabled because of that. In my gnome notifications panel I also see a notification about the hamster service not responding (but the timestamp is not accurate and I do not see this in journalctl, so I am not sure if this happened at the same time).

It is a bit weird that the keybinding error is before the "Shutting down" message, but looking at the code, that is just how things are ordered.

This looks a bit like #365, where this message also appears when the the dbus service disappears, but there it does not seem to correlate with suspending.

This was with a couple months old develop branch, running commit f7d9301 on Gnome 47 on Ubuntu 24.10.

Weirdly enough this now happened a couple times in a few weeks, while I did not see it at all before that, while I did not do any major updates to any related software (except regular security updates from Ubuntu).

I do not know if the hamster extension was actually displaying its UI before this suspend. I suspect that maybe it was not (still waiting for a dbus connection, so deferred_enable did not initialize things yet), so then there might be two issues here:

  1. Somehow the extension does not initialize on startup sometimes. I suspect this issue exists, but have not verified it.
  2. when disabling the extension before it is initialized, you get the above error. I see this issue exists in the code, and could be fixed with a check in disable().

I've applied a possible fix for 2. locally (i.e. do not try disabling if panelWidget is already null), which should prevent the extension going into an error state in this case. This might also offer a workaround for 1., since (when gnome-shell does not see an error) you can re-enable the extension again to retry initialization. I'll see if I can catch this issue again and report back here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions