View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017708 | Scribus | General | public | 2025-12-10 21:34 | 2025-12-18 18:10 |
| Reporter | notoo1 | Assigned To | |||
| Priority | urgent | Severity | crash | Reproducibility | always |
| Status | new | Resolution | open | ||
| Product Version | 1.7.0 | ||||
| Summary | 0017708: scribus: crashes with "Settings schema 'org.gtk.Settings.FileChooser' is not installed" | ||||
| Description | Scribus crashes immediately on launch with GTK schema error on NixOS. | ||||
| Steps To Reproduce | nix run nixpkgs#scribus | ||||
| Additional Information | (scribus:5880): GLib-GIO-ERROR **: 21:27:47.362: Settings schema 'org.gtk.Settings.FileChooser' is not installed fish: Job 1, 'nix run nixpkgs#scribus' terminated by signal SIGTRAP (Trace or breakpoint trap) System info NixOS version: 25.11.20251120.117cc7f (Xantusia) Scribus version: 1.7.0 Channel: nixos-unstable Workaround Creating a wrapper script with proper GTK environment setup works: (writeShellScriptBin "scribus" '' export XDG_DATA_DIRS="${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS" export GSETTINGS_SCHEMA_DIR="${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}/glib-2.0/schemas" exec ${scribus}/bin/scribus "$@" '') This creates a wrapper that sets up the GTK schemas environment before launching Scribus. | ||||
| Tags | No tags attached. | ||||
| Patch | No | ||||
|
|
thanks for copying the ticket in here! do you have ways to create a backtrace, so that it's a bit easier to know if it's Scribus or Qt that crashes and have a first estimation of possible cause and the effort needed for a fix? |
|
|
## Environment - NixOS version: 26.05.20251215.1306659 (Yarara) - Scribus version: 1.7.0 - Package: /nix/store/q2qf4jxnnv7c00d5kz76a7gxvd2b42za-scribus-1.7.0 ## Problem Scribus crashes immediately on startup with SIGTRAP when trying to use GTK file chooser dialogs. ## Error Output (scribus:48406): GLib-GIO-ERROR **: 15:29:46.047: Settings schema 'org.gtk.Settings.FileChooser' is not installed fish: Job 1, 'scribus' terminated by signal SIGTRAP (Trace or breakpoint trap) ## GDB Backtrace GNU gdb (GDB) 16.3 Reading symbols from scribus... (No debugging symbols found in scribus) (gdb) run Starting program: /nix/store/s4vss8wdgj1pb58r5f8r52a4rp45z132-user-environment/bin/scribus [Thread debugging using libthread_db enabled] Using host libthread_db library "/nix/store/xx7cm72qy2c0643cm1ipngd87aqwkcdp-glibc-2.40-66/lib/libthread_db.so.1". process 48406 is executing new program: /nix/store/q2qf4jxnnv7c00d5kz76a7gxvd2b42za-scribus-1.7.0/bin/.scribus-wrapped (scribus:48406): GLib-GIO-ERROR **: 15:29:46.047: Settings schema 'org.gtk.Settings.FileChooser' is not installed Thread 1 ".scribus-wrappe" received signal SIGTRAP, Trace/breakpoint trap. 0x00007ffff450e12f in g_log_structured_array () from /nix/store/5qdsnc26nv61j5rrw492f19xav2rz45v-glib-2.86.1/lib/libglib-2.0.so.0 (gdb) bt full #0 0x00007ffff450e12f in g_log_structured_array () from /nix/store/5qdsnc26nv61j5rrw492f19xav2rz45v-glib-2.86.1/lib/libglib-2.0.so.0 No symbol table info available. Backtrace stopped: Cannot access memory at address 0x7fffffff8208 ## Root Cause Scribus (a Qt application) uses GTK file chooser dialogs which require the `org.gtk.Settings.FileChooser` schema from `gsettings-desktop-schemas`. The current package wrapper does not include this dependency in `XDG_DATA_DIRS`. |
|
|
Thanks for the backtrace. From what I can understand from it, it looks like it's GTK that is crashing, not Scribus. But, maybe, Scribus is calling it in the wrong way... who knows? Let's see if somebody else can find out more. |
|
|
## Investigation The schema `org.gtk.Settings.FileChooser` exists in GTK3 packages: ```bash $ find /nix/store/*gtk+3-3.24*/share/gsettings-schemas/*/glib-2.0/schemas/ -name "*.xml" -exec grep -l "FileChooser" {} \; /nix/store/cs86fhm7hsgxm20m826cl5qqc4nyg33s-gtk+3-3.24.51/share/gsettings-schemas/gtk+3-3.24.51/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml ``` However, it's not available at runtime: ```bash $ gsettings list-schemas | grep -i filechooser org.gtk.gtk4.Settings.FileChooser $ gsettings list-recursively org.gtk.Settings.FileChooser No such schema "org.gtk.Settings.FileChooser" ``` Scribus depends on GTK3: ```bash $ nix-store -q --tree /nix/store/q2qf4jxnnv7c00d5kz76a7gxvd2b42za-scribus-1.7.0 | grep gtk │ ├───/nix/store/cs86fhm7hsgxm20m826cl5qqc4nyg33s-gtk+3-3.24.51 ``` ## Root Cause Scribus depends on GTK3 (shown in dependency tree) but the package wrapper does not include GTK3 schemas in `XDG_DATA_DIRS`. This causes Scribus to crash when attempting to access GTK3 file chooser settings. ## Expected Fix The scribus package wrapper should include GTK3 gsettings schemas in `XDG_DATA_DIRS`, similar to how other Qt applications that use GTK platform themes handle this dependency. |
|
|
I've confirmed this fixes the issue locally: (symlinkJoin { name = "scribus-wrapped"; paths = [ scribus ]; buildInputs = [ makeWrapper ]; postBuild = '' wrapProgram $out/bin/scribus \ --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}" # Recreate desktop file to point to wrapped executable if [ -d ${scribus}/share/applications ]; then rm -f $out/share/applications/*.desktop for desktop in ${scribus}/share/applications/*.desktop; do substitute $desktop $out/share/applications/$(basename $desktop) \ --replace-fail "Exec=scribus" "Exec=$out/bin/scribus" done fi ''; }) The fix needs gtk3 schemas added to XDG_DATA_DIRS in the package wrapper. |