#1144219 glycin-loaders: with valgrind, "Loader process exited early with status '1'"

Package:
glycin-loaders
Source:
glycin-loaders
Description:
sandboxed image loaders for GNOME
Submitter:
Vincent Lefevre
Date:
2026-08-12 17:35:01 UTC
Severity:
normal
#1144219#5
Date:
2026-08-12 14:23:45 UTC
From:
To:
When trying to run some programs with valgrind (for debugging),
I get failures, and the processes end up in aborting.

For instance, with gtk3-demo:

qaa:~> valgrind --trace-children=yes gtk3-demo
==417228== Memcheck, a memory error detector
==417228== Copyright (C) 2002-2026, and GNU GPL'd, by Julian Seward et al.
==417228== Using Valgrind-3.27.1 and LibVEX; rerun with -h for copyright info
==417228== Command: gtk3-demo
==417228==
--417228-- WARNING: unhandled amd64-linux syscall: 317
--417228-- You may be able to write your own handler.
--417228-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--417228-- Nevertheless we consider this a bug.  Please report
--417228-- it at http://valgrind.org/support/bug_reports.html.

(gtk3-demo:417228): Gtk-WARNING **: 16:00:53.275: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
Gtk:ERROR:../../../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: Loader process exited early with status '1'Command:
 "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib32" "/lib32" "--symlink" "/usr/lib64" "/lib64" "--symlink" "/usr/libx32" "/libx32" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/vinc17/.cache/fontconfig" "/home/vinc17/.cache/fontconfig" "--ro-bind-try" "/home/vinc17/.config/fontconfig/fonts.conf" "/home/vinc17/.config/fontconfig/fonts.conf" "--ro-bind-try" "/home/vinc17/.local/share/fonts" "/home/vinc17/.local/share/fonts" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/vinc17/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "/home/vinc17/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/vinc17/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--seccomp" "17" "/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd" "16" (gdk-pixbuf-error-quark, 0)
Bail out! Gtk:ERROR:../../../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: Loader process exited early with status '1'Command:  "bwrap" "--unshare-all" "--die-with-parent" "--chdir" "/" "--ro-bind" "/usr" "/usr" "--dev" "/dev" "--ro-bind-try" "/etc/ld.so.cache" "/etc/ld.so.cache" "--ro-bind-try" "/nix/store" "/nix/store" "--tmpfs" "/tmp-home" "--tmpfs" "/tmp-run" "--clearenv" "--setenv" "HOME" "/tmp-home" "--setenv" "XDG_RUNTIME_DIR" "/tmp-run" "--setenv" "XDG_RUNTIME_DIR" "/run/user/1000" "--symlink" "/usr/lib" "/lib" "--symlink" "/usr/lib32" "/lib32" "--symlink" "/usr/lib64" "/lib64" "--symlink" "/usr/libx32" "/libx32" "--ro-bind-try" "/etc/fonts/conf.d" "/etc/fonts/conf.d" "--ro-bind-try" "/etc/fonts/fonts.conf" "/etc/fonts/fonts.conf" "--ro-bind-try" "/home/vinc17/.cache/fontconfig" "/home/vinc17/.cache/fontconfig" "--ro-bind-try" "/home/vinc17/.config/fontconfig/fonts.conf" "/home/vinc17/.config/fontconfig/fonts.conf" "--ro-bind-try" "/home/vinc17/.local/share/fonts" "/home/vinc17/.local/share/fonts" "--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig" "--bind-try" "/home/vinc17/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "/home/vinc17/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--setenv" "XDG_CACHE_HOME" "/home/vinc17/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg" "--seccomp" "17" "/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd" "16" (gdk-pixbuf-error-quark, 0)
==417228==
==417228== Process terminating with default action of signal 6 (SIGABRT): dumping core
==417228==    at 0x5C6F1DC: __pthread_kill_implementation (pthread_kill.c:44)
==417228==    by 0x5C18841: raise (raise.c:26)
==417228==    by 0x5C004B1: abort (abort.c:77)
==417228==    by 0x52B00B1: g_assertion_message.cold (gtestutils.c:3478)
==417228==    by 0x53206C1: g_assertion_message_error (gtestutils.c:3661)
==417228==    by 0x4C10A8F: ensure_surface_for_gicon (gtkiconhelper.c:495)
==417228==    by 0x4C10F86: gtk_icon_helper_load_surface (gtkiconhelper.c:567)
==417228==    by 0x4C11281: gtk_icon_helper_ensure_surface (gtkiconhelper.c:604)
==417228==    by 0x4C11281: gtk_icon_helper_ensure_surface (gtkiconhelper.c:595)
==417228==    by 0x4C11281: _gtk_icon_helper_get_size (gtkiconhelper.c:663)
==417228==    by 0x4C2569E: gtk_image_get_content_size (gtkimage.c:1716)
==417228==    by 0x4B6EE26: gtk_css_custom_gadget_get_preferred_size (gtkcsscustomgadget.c:124)
==417228==    by 0x4B73BC6: gtk_css_gadget_get_preferred_size (gtkcssgadget.c:683)
==417228==    by 0x4C25E36: gtk_image_get_preferred_height_and_baseline_for_width (gtkimage.c:1948)
==417228==
==417228== HEAP SUMMARY:
==417228==     in use at exit: 5,501,620 bytes in 93,854 blocks
==417228==   total heap usage: 314,518 allocs, 220,664 frees, 28,459,931 bytes allocated
==417228==
==417228== LEAK SUMMARY:
==417228==    definitely lost: 814,848 bytes in 3,177 blocks
==417228==    indirectly lost: 1,115,088 bytes in 42,906 blocks
==417228==      possibly lost: 13,923 bytes in 70 blocks
==417228==    still reachable: 3,246,433 bytes in 45,204 blocks
==417228==         suppressed: 336 bytes in 2 blocks
==417228== Rerun with --leak-check=full to see details of leaked memory
==417228==
==417228== For lists of detected and suppressed errors, rerun with: -s
==417228== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
zsh: abort      valgrind --trace-children=yes gtk3-demo

#1144219#10
Date:
2026-08-12 14:28:21 UTC
From:
To:
[...]

I forgot to say that this

  Loader process exited early with status '1'

error message seems to come from rust-glycin:

https://codesearch.debian.net/search?q=Loader+process+exited+early+with+status&literal=1

gives only one result:

rust-glycin_3.1.0-3/src/error.rs

    #[error("Unknown content type: {0}")]
    UnknownContentType(String),
    #[error("Loader process exited early with status '{}'Command:\n {cmd}", .status.code().unwrap_or_default())]
    PrematureExit { status: ExitStatus, cmd: String },
    #[error("Conversion too large")]

https://sources.debian.org/src/rust-glycin/3.1.0-3/src/error.rs?hl=160#L160

#1144219#15
Date:
2026-08-12 17:32:18 UTC
From:
To:
According to my /usr/include/x86_64-linux-gnu/asm/unistd_64.h, this is
seccomp(). It doesn't really surprise me if glycin, a framework for
confining potentially attackable image decoders into a sandboxed
subprocess, doesn't work in the case where it's unable to apply seccomp
confinement to the sandbox.

After glycin has been updated to a newer upstream release, it'll be
possible to use environment variable
GLYCIN_DISABLE_SANDBOX=i-know-the-risks while valgrinding, and that
would probably bypass this, although I realise that doesn't help you
immediately.

     smcv