gnome shell 47.5 works fine.
gnome shell 48.0 crashes.
The only thing sticking out in the debug output is this:
js-CRITICAL **: 19:34:36.017: JS ERROR: GLib.FileError: Failed to open file “undefined/gnome-shell-dbus-interfaces.gresource”: open() failed: No such file or directory
I noticed this same file is in gnome shell 47 though it’s not exactly the same.
I don’t know what is undefined. The file lives in “/usr/share/gnome-shell/” in both cases.
What distro are you using? Have you filed a bug with your distro maintainers?
It’s my own test bed, not an official distro. I built gnome from git for fun. It’s quite possible exactly no one else has this problem but me, but I thought I’d share just in case.
The issue is the undefined
value in the path here (probably an uninitialized javascript
variable).
I’m have trouble finding the source of the “undefined”.
Here is some additional information that I should have included:
Stack trace:
_ensureIfaceResource@resource:///org/gnome/shell/misc/dbusUtils.js:18:35
loadInterfaceXML@resource:///org/gnome/shell/misc/dbusUtils.js:27:5
@resource:///org/gnome/shell/misc/loginManager.js:9:50
@resource:///org/gnome/shell/ui/init.js:21:20
@resource:///org/gnome/shell/ui/init.js:21:20
The only js file that is different between gnome-shell 47 and gnome-shell 48 is:
js/misc/loginManager.js
That is where I am looking now.
The value is supposed to be set in config.js
at build time. How did you build gnome-shell?
I use meson and ninja with a simple configure stanza:
–wrap-mode=nodownload
–prefix /usr
–libdir /usr/lib64
–mandir /usr/share/man
–infodir /usr/share/info
–sysconfdir /etc
–localstatedir /var
The js/misc/config.js becomes generated as follows:
const pkg = imports.package;
/* The name of this package (not localized) /
export const PACKAGE_NAME = ‘gnome-shell’;
/ The version of this package /
export const PACKAGE_VERSION = ‘48.0’;
/ 1 if networkmanager is available, 0 otherwise /
export const HAVE_NETWORKMANAGER = 1;
/ 1 if portal helper is enabled, 0 otherwise /
export const HAVE_PORTAL_HELPER = 1;
/ gettext package /
export const GETTEXT_PACKAGE = ‘gnome-shell’;
/ locale dir /
export const LOCALEDIR = ‘/usr/share/locale’;
/ other standard directories /
export const LIBEXECDIR = ‘/usr/libexec’;
export const PKGDATADIR = ‘/usr/share/gnome-shell’;
/ g-i package versions */
export const LIBMUTTER_API_VERSION = ‘16’;
export const HAVE_BLUETOOTH = pkg.checkSymbol(‘GnomeBluetooth’, ‘3.0’,
‘Client.default_adapter_state’);
export const UTILITIES_FOLDER_APPS = [
‘org.gnome.Decibels’,
‘org.gnome.Connections.desktop’,
‘org.gnome.Evince.desktop’,
‘org.gnome.FileRoller.desktop’,
‘org.gnome.font-viewer.desktop’,
‘org.gnome.Loupe.desktop’,
‘org.gnome.seahorse.Application.desktop’
]
;
export const SYSTEM_FOLDER_APPS = [
‘nm-connection-editor.desktop’,
‘org.gnome.DejaDup.desktop’,
‘org.gnome.baobab.desktop’,
‘org.gnome.DiskUtility.desktop’,
‘org.gnome.Logs.desktop’,
‘org.freedesktop.MalcontentControl.desktop’,
‘org.freedesktop.GnomeAbrt.desktop’,
‘org.gnome.tweaks.desktop’,
‘org.gnome.Sysprof.desktop’,
‘org.gnome.SystemMonitor.desktop’
]
;
What is the output of gresource extract /usr/lib64/gnome-shell/libshell-16.so /org/gnome/shell/misc/config.js
?
gresource extract libshell-16.so /org/gnome/shell/misc/config.js
const pkg = imports.package;
/* The name of this package (not localized) /
export const PACKAGE_NAME = ‘gnome-shell’;
/ The version of this package /
export const PACKAGE_VERSION = ‘48.0’;
/ 1 if networkmanager is available, 0 otherwise /
export const HAVE_NETWORKMANAGER = 1;
/ 1 if portal helper is enabled, 0 otherwise /
export const HAVE_PORTAL_HELPER = 1;
/ gettext package /
export const GETTEXT_PACKAGE = ‘gnome-shell’;
/ locale dir /
export const LOCALEDIR = ‘/usr/share/locale’;
/ other standard directories /
export const LIBEXECDIR = ‘/usr/libexec’;
export const PKGDATADIR = ‘/usr/share/gnome-shell’;
/ g-i package versions */
export const LIBMUTTER_API_VERSION = ‘16’;
export const HAVE_BLUETOOTH = pkg.checkSymbol(‘GnomeBluetooth’, ‘3.0’,
‘Client.default_adapter_state’);
export const UTILITIES_FOLDER_APPS = [
‘org.gnome.Decibels’,
‘org.gnome.Connections.desktop’,
‘org.gnome.Evince.desktop’,
‘org.gnome.FileRoller.desktop’,
‘org.gnome.font-viewer.desktop’,
‘org.gnome.Loupe.desktop’,
‘org.gnome.seahorse.Application.desktop’
]
;
export const SYSTEM_FOLDER_APPS = [
‘nm-connection-editor.desktop’,
‘org.gnome.DejaDup.desktop’,
‘org.gnome.baobab.desktop’,
‘org.gnome.DiskUtility.desktop’,
‘org.gnome.Logs.desktop’,
‘org.freedesktop.MalcontentControl.desktop’,
‘org.freedesktop.GnomeAbrt.desktop’,
‘org.gnome.tweaks.desktop’,
‘org.gnome.Sysprof.desktop’,
‘org.gnome.SystemMonitor.desktop’
]
;
Where is this file placed?
Whether I have been using gnome-shell version 47 or version 48 that library has always been located in /usr/lib64/gnome-shell/
The appropriate library version in each case to be clear.
Do you have the GNOME_SHELL_DATADIR
environment variable set when running gnome-shell?
[quote=“skeller, post:12, topic:27873”]
GNOME_SHELL_DATADIR
[/quote]+
I saw that variable when poking around with ghex/strings in the libshell binaries.
I just tried running gnome shell 48 in a window and adding that variable to the environment.
Gnome shell 48 came up!
I had never needed set that variable with previous gnome-shell versions.
You shouldn’t need to. I was rather thinking if you had set it to undefined
for some reason, that could have resulted in what you are seeing.