Public bug reported:
Summary: crash.c calls the un-wrapped invoke_with_pkexec() in update-
notifier.c, so "Report problem..." fails with "Refusing to render
service to dead parents".
Package: update-notifier 3.207.2
Release: Ubuntu 26.04.1 LTS (resolute), amd64
Session: XFCE / X11 (XDG_SESSION_TYPE=x11)
What happens
------------
On a desktop that runs the update-notifier daemon rather than the
update-notifier-crash.service systemd user unit (XFCE/Xubuntu does this;
update-notifier-crash.service never starts there), a system crash report in
/var/crash produces the "System program problem detected" dialog.
Clicking "Report problem..." does nothing: no polkit prompt, no apport-gtk
window, and
no pkexec entry in the journal.
With G_MESSAGES_DEBUG=all update-notifier --debug-misc:
DEBUG: crashreport_check
DEBUG: crashreport found running apport now
DEBUG: fire up the crashreport tool
DEBUG: invoke_with_pkexec ()
Refusing to render service to dead parents.
Cause
-----
There are two definitions of invoke_with_pkexec(). Only one carries the
workaround added for LP #1821412.
src/system-crash.c:40 -- built into
/usr/lib/update-notifier/system-crash-notification,
which is what update-notifier-crash.service runs:
gchar *command_line = g_strdup_printf("/bin/sh -c '/usr/bin/pkexec %s'",
CRASHREPORT_REPORT_APP);
g_shell_parse_argv(command_line, NULL, &argv, NULL);
g_spawn_async(NULL, argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, NULL, NULL);
src/update-notifier.c:154 -- used by the daemon, called from
src/crash.c:75:
argv[0] = "/usr/bin/pkexec";
argv[1] = (gchar*)cmd;
argv[2] = NULL;
g_spawn_async(NULL, argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, NULL, NULL);
G_SPAWN_DEFAULT does not include G_SPAWN_DO_NOT_REAP_CHILD, so GLib forks an
intermediate child which forks the real child and _exit()s. The real child is
reparented to init, and pkexec refuses to run when getppid() == 1.
The /bin/sh wrapper avoids this because dash forks rather than exec-optimising
here, leaving a live parent for pkexec.
Measured PPID of the spawned program, same GLib call, same flags:
argv = {"/usr/bin/pkexec", ...} PPID = 1
argv = {"/bin/sh", "-c", "/usr/bin/pkexec ..."} PPID = <live dash>
G_SPAWN_DO_NOT_REAP_CHILD PPID = <caller>
And against pkexec directly, from a long-lived parent:
g_spawn_async({"/usr/bin/pkexec", "/bin/true"}, G_SPAWN_DEFAULT)
-> "Refusing to render service to dead parents." 5/5
g_spawn_async({"/bin/sh","-c","/usr/bin/pkexec /bin/true"}, G_SPAWN_DEFAULT)
-> reaches authentication 3/3
Note: probing with a non-existent target hides the bug. pkexec validates the
program path before it checks the parent, so "pkexec /nonexistent" reports
"Error accessing ..." and never reaches the getppid() test.
Suggested fix
-------------
Apply the same treatment to src/update-notifier.c:154 as src/system-crash.c:40
already has, or pass G_SPAWN_DO_NOT_REAP_CHILD (with a child watch to reap).
src/crash.c:75 is the only caller of that copy across all of src/, so the
change is contained. (The --force-use-pkexec option sets a static FORCE_PKEXEC
in update-notifier.c that is never read anywhere -- it looks like dead code,
unrelated to this.)
Related
-------
LP #1821412 -- Fix Released; introduced the /bin/sh wrapper, but only in
system-crash.c. The daemon path in crash.c was not covered.
LP #1823496 -- Confirmed, XFCE 18.04, same "Refusing to render service to dead
parents" output. Probably the same bug.
LP #2048914 -- Xubuntu 24.04, same user-visible symptom, diagnosed down a
different path.
LP #1947929 -- separate, Wayland-only (crash.c:71 skips pkexec entirely there).
ProblemType: Bug
DistroRelease: Ubuntu 26.04
Package: update-notifier 3.207.2
ProcVersionSignature: Ubuntu 7.0.0-30.30-generic 7.0.12
Uname: Linux 7.0.0-30-generic x86_64
ApportVersion: 2.34.1-0ubuntu0.1
Architecture: amd64
CasperMD5CheckResult: pass
CurrentDesktop: XFCE
Date: Thu Aug 27 13:07:58 2026
InstallationDate: Installed on 2026-08-01 (26 days ago)
InstallationMedia: Xubuntu 26.04 "Resolute Raccoon" - Release amd64 (20260423.1)
ProcEnviron:
LANG=en_US.UTF-8
PATH=(custom, no user)
SHELL=/usr/bin/zsh
TERM=tmux-256color
XDG_RUNTIME_DIR=<set>
SourcePackage: update-notifier
UpgradeStatus: No upgrade log present (probably fresh install)
** Affects: update-notifier (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug resolute
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2165313
Title:
bug in crash.c causes "Report problem..." button to fail
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/update-notifier/+bug/2165313/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs