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.