Gnome shell/mutter 48.0 crashing while building from git (original) (raw)
March 21, 2025, 12:15am 1
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.
jbicha (Jeremy Bicha) March 21, 2025, 12:30am 2
What distro are you using? Have you filed a bug with your distro maintainers?
fredro March 21, 2025, 12:00pm 3
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.
Sid (Sid) March 21, 2025, 12:05pm 4
The issue is the undefined
value in the path here (probably an uninitialized javascript
variable).
fredro March 21, 2025, 2:58pm 5
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🔞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.
skeller (Sebastian Keller) March 21, 2025, 4:39pm 6
The value is supposed to be set in config.js
at build time. How did you build gnome-shell?
fredro March 21, 2025, 5:28pm 7
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’
]
;
skeller (Sebastian Keller) March 21, 2025, 5:54pm 8
What is the output of gresource extract /usr/lib64/gnome-shell/libshell-16.so /org/gnome/shell/misc/config.js
?
fredro March 21, 2025, 5:57pm 9
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’
]
;
skeller (Sebastian Keller) March 21, 2025, 6:19pm 10
Where is this file placed?
fredro March 21, 2025, 7:34pm 11
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.
skeller (Sebastian Keller) March 21, 2025, 8:05pm 12
Do you have the GNOME_SHELL_DATADIR
environment variable set when running gnome-shell?
fredro March 21, 2025, 8:57pm 13
[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.
skeller (Sebastian Keller) March 21, 2025, 9:28pm 14
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.