Hi,
I just learned that volumeicon had been removed from Debian,
although it still works except for a bug in glycin. :-(
(It's high quality software that didn't need updates in
almost 10 years and still has happy users!)
Here is the workaround:
volumeicon & sleep 2; pkill -P `pidof volumeicon` bwrap
There is a hanging bwrap process in the "Testing bwrap
availability" step, killing it makes glycin continue
to load volumeicon's icons:
$ G_MESSAGES_DEBUG=all volumeicon
(volumeicon:15428): GLib-DEBUG: 19:33:03.485: unsetenv() is not thread-safe and
should not be used after threads are created
(volumeicon:15428): GLib-GIO-DEBUG: 19:33:03.487: _g_io_module_get_default:
Found default implementation local (GLocalVfs) for ‘gio-vfs’
2026-03-15T18:33:03.515856Z DEBUG glycin::gobject: Initialized logging
2026-03-15T18:33:03.518332Z DEBUG glycin::sandbox: Testing bwrap availability
with: "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" "--symlink" "/usr/lib32" "/lib32"
"--symlink" "/usr/lib64" "/lib64" "--symlink" "/usr/lib" "/lib" "--symlink"
"/usr/libx32" "/libx32" "--seccomp" "12" "/usr/bin/true"
2026-03-15T18:34:33.126481Z INFO glycin::sandbox: Can't determine if bwrap
syscalls are blocked: IO error: No child processes (os error 10) (StdIoError {
err: Os { code: 10, kind: Uncategorized, message: "No child processes" }, info:
"" }
)
...
After this bwrap is killed glycin gets an error but continues
anyway. Running the bwrap command alone in a shell (without
seccomp) doesn't hang, only when glycin calls it. The key
difference in strace is that /usr/bin/true exits wait4 returns
ECHILD instead of its exit status:
glycin:
16665 20:09:11.648386 exit_group(0) = ?
16665 20:09:11.648590 +++ exited with 0 +++
16663 20:09:11.648604 <... wait4 resumed>, 0x7fff013f71c4, 0, NULL) = -1 ECHILD
(No child processes)
16663 20:09:11.648778 exit_group(1) = ?
16663 20:09:11.649339 +++ exited with 1 +++
(parent process hangs in poll())
shell:
17067 20:31:48.320606 exit_group(0) = ?
17067 20:31:48.320795 +++ exited with 0 +++
17065 20:31:48.320822 <... wait4 resumed>, [{WIFEXITED(s) && WEXITSTATUS(s) ==
0}], 0, NULL) = 2
17065 20:31:48.320874 write(4, "\1\0\0\0\0\0\0\0", 8) = 8
17065 20:31:48.320949 wait4(-1 <unfinished ...>
17064 20:31:48.320968 <... poll resumed>) = 1 ([{fd=4, revents=POLLIN}])
17065 20:31:48.320997 <... wait4 resumed>, 0x7ffde3999754, 0, NULL) = -1 ECHILD
(No child processes)
17064 20:31:48.321022 read(4, "\1\0\0\0\0\0\0\0", 8) = 8
17064 20:31:48.321151 exit_group(0 <unfinished ...>
17065 20:31:48.321174 exit_group(0 <unfinished ...>
This issue should be reassigned to the rust-glycin package.
It's apparently also a bwrap bug that it hangs in this case,
child brwap process exits with error status without writing to the pipe
to wake up the parent process.
Best Regards,
Johannes