#1128079 uncoordinated transition causes other packages to break (e.g. volumeicon-alsa)

Package:
libgdk-pixbuf-2.0-0
Source:
libgdk-pixbuf-2.0-0
Description:
GDK Pixbuf library
Submitter:
Francesco Poli (wintermute)
Date:
2026-08-14 05:01:02 UTC
Severity:
normal
#1128079#5
Date:
2026-02-14 22:54:56 UTC
From:
To:
Hello!

After the following upgrade:

    [UPGRADE] libgdk-pixbuf-2.0-0:amd64 2.44.4+dfsg-1 -> 2.44.5+dfsg-3

the 'volumeicon' program (shipped by Debian package 'volumeicon-alsa')
can run, but fails to become visible in the systray, thus failing to
be of any use.

Downgrading libgdk-pixbuf-2.0-0 to version 2.44.4+dfsg-1 makes 'volumeicon'
work again as usual.

Please investigate and fix this bug and/or forward the bug report upstream,
as appropriate.

Thanks for your time and dedication!

#1128079#10
Date:
2026-02-15 10:49:48 UTC
From:
To:
Dear Maintainer,

Evince fails to start. Probably it is due to the same problem with
libgdk-pixbuf-2.0-0.

Error message:
Gtk:ERROR:../../../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon:
assertion failed (error == NULL): Failed to load
/usr/share/icons/Tango/scalable/status/image-missing.svg: Could not
spawn `"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/lib64" "/lib64" "--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/simon/.cache/fontconfig" "/home/simon/.cache/fontconfig"
"--ro-bind-try" "/home/simon/.fontconfig" "/home/simon/.fontconfig"
"--ro-bind-try" "/home/simon/.fonts" "/home/simon/.fonts"
"--ro-bind-try" "/var/cache/fontconfig" "/var/cache/fontconfig"
"--bind-try"
"/home/simon/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg"
"/home/simon/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg"
"--setenv" "XDG_CACHE_HOME"
"/home/simon/.cache/glycin/usr/libexec/glycin-loaders/2+/glycin-svg"
"--seccomp" "21" "/usr/libexec/glycin-loaders/2+/glycin-svg" "--dbus-fd"
"20"`: Toegang geweigerd (os error 13) (gdk-pixbuf-error-quark, 0)

Update history:: Start-Date: 2026-02-14  13:41:31
Install: glycin-loaders:amd64 (2.0.7+ds-5, automatic),
glycin-thumbnailers:amd64 (2.0.7+ds-5, automatic), libglycin-2-0:amd64
(2.0.7+ds-5, automatic)
Upgrade: libgnome-desktop-3-20t64:amd64 (44.4-1+b1, 44.5-1),
gir1.2-gdkpixbuf-2.0:amd64 (2.44.4+dfsg-1, 2.44.5+dfsg-3),
libgdk-pixbuf-2.0-0:amd64 (2.44.4+dfsg-1, 2.44.5+dfsg-3),
dracut-install:amd64 (109-11, 110-1), gnome-desktop3-data:amd64 (44.4-1,
44.5-1), libgdk-pixbuf2.0-common:amd64 (2.44.4+dfsg-1, 2.44.5+dfsg-3)
Remove: libgdk-pixbuf2.0-bin:amd64 (2.44.4+dfsg-1)
End-Date: 2026-02-14  13:41:35

#1128079#15
Date:
2026-02-15 12:15:46 UTC
From:
To:
For evince see #1127935, which is fixed in unstable.

     smcv

#1128079#22
Date:
2026-02-15 13:31:58 UTC
From:
To:
Control: reassign -1 src:volumeicon 0.5.1+git20230228-1
Control: affects -1 = src:gdk-pixbuf

I'm reassigning to volumeicon for now. Debian's gdk-pixbuf 2.44.5
switched to glycin to provide image loaders. Some apps will need to
make adjustments.

Thank you,
Jeremy Bícha

#1128079#35
Date:
2026-02-15 17:20:19 UTC
From:
To:
Control: clone -1 -2
Control: reassign -2 libgdk-pixbuf-2.0-0 2.44.5+dfsg-3
Control: affects -2 = volumeicon-alsa
Control: retitle -2 uncoordinated transition causes other packages to break (e.g. volumeicon-alsa)
Control: block -2 by -1

It's OK to reassign, if the bug has to be fixed in 'volumeicon-alsa',
but please let's also keep an RC bug open in 'libgdk-pixbuf-2.0-0', so
that people (especially users of 'apt-listbugs') get warned not to
upgrade 'libgdk-pixbuf-2.0-0' until the 'volumeicon-alsa' is fixed...

Thanks a lot for your cooperation!

#1128079#54
Date:
2026-03-04 14:46:06 UTC
From:
To:
Can confirm volumeicon is broken in sid.
#1128079#59
Date:
2026-03-21 21:04:13 UTC
From:
To:
I've seen indications in other bug tracking systems that volumeicon
might set SIGCHLD to be ignored. That would be consistent with this
symptom: if SIGCHLD is explicitly ignored (set to SIG_IGN), then the
child process will disappear immediately instead of briefly becoming a
zombie process, therefore it isn't available to be reaped by the parent,
and wait4 and similar functions will fail with ECHILD, making exit
status unavailable.

Unfortunately signal disposition is inheritable state and
process-global, so a parent process ignoring SIGCHLD can break its child
processes' assumptions (as well as libraries in its own process space).

bubblewrap (as used by glycin) relies on process management working
normally. The new bubblewrap 0.11.1 release, which I recently uploaded
to unstable, works around parent processes that ignore SIGCHLD by
explicitly resetting that signal to its default disposition (originally
requested for the benefit of Erlang), which might avoid this failure
mode - although any non-bubblewrap-related library that expects to be able
to wait for subprocesses would likely have the same problem.

I couldn't find evidence of volumeicon ignoring this signal in
codesearch, but perhaps some library that it uses that ignores this
signal, rather than volumeicon itself?

https://codesearch.debian.net/search?q=SIGCHLD+package%3Aalsa-lib&literal=0
does point to alsa-lib (libasound) potentially ignoring SIGCHLD under
some circumstances, although if it does that consistently, I would have
expected it to break subprocess handling in more places. Possibly it
only changes signal disposition when accessing audio devices directly,
and not in clients of a sound server like PulseAudio or Pipewire?

If someone wants to adopt/maintain/reintroduce volumeicon, using a
debugger to find which component ignores SIGCHLD (presumably a call to
signal() or sigaction()) would probably be a useful direction in which
to investigate.
ignore SIGCHLD. (If it did, it wouldn't work for anyone, including its
maintainer.)

     smcv

#1128079#64
Date:
2026-03-21 21:34:38 UTC
From:
To:
Thanks for the explanation, tricky stuff!

volumeicon itself does it:

https://github.com/mati75/volumeicon-debian/blob/master/src/volumeicon.c#L1330

Presumably because it can spawn an external mixer,
the default is "xterm -e 'alsamixer'".


Thanks,
Johannes

#1128079#69
Date:
2026-03-21 22:18:37 UTC
From:
To:
Huh, I wonder why codesearch didn't find that? Perhaps it was removed
from codesearch's index immediately when it was removed from unstable
(I'd assumed it would still be there for a while, since it's still on
sources.debian.org).

It would be better if it did this with an interface that reaps the
process without needing to ignore SIGCHLD, like g_spawn_async() without
G_SPAWN_DO_NOT_REAP_CHILD, or double-forking (forking in the child_setup
function, in GLib's APIs) to get the process re-parented to something
that will reap it. GLib's API documentation for
g_child_watch_source_new() has a long list of ways that waiting for a
process can fail, unless all the libraries that share a process space
are cooperating with each other.

     smcv

#1128079#74
Date:
2026-03-22 18:24:13 UTC
From:
To:
I can confirm the new bubblewrap version 0.11.1-1 fixes volumeicon.

Thanks,
Johannes

#1128079#79
Date:
2026-08-14 04:59:05 UTC
From:
To:
I don't think there's anything that we can do in gdk-pixbuf for this
complaint, so I'm closing this bug now.

Thank you,
Jeremy Bícha