Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#1035325: prctl(2): PR_SET_CHILD_SUBREAPER description is misleading in relation to PID namespaces

15 views
Skip to first unread message

Michael Gold

unread,
Apr 30, 2023, 5:20:05 PM4/30/23
to
Package: manpages-dev
Version: 6.03-1
Severity: minor

Dear Maintainer,

The prctl manual page says:
PR_SET_CHILD_SUBREAPER (since Linux 3.4)
[…]
A subreaper fulfills the role of init(1) for its descendant pro‐
cesses. When a process becomes orphaned (i.e., its immediate
parent terminates), then that process will be reparented to the
nearest still living ancestor subreaper. […]

Part of the role of init(1) is to remain running while any child process
needs to be running: the kernel will panic if the global init goes away,
and will send SIGKILL to all processes of the namespace whose init dies.
The reference to a "still living" subreaper, however, suggests that this
does not apply to subreapers, and a test program confirms it; therefore,
subreapers do not fulfill the full role of init(1). That's overly vague
anyway; "man 1 init" references many things a subreaper wouldn't have to
do, and POSIX has only a few passing references to init or PID 1.

Also, the text contradicts pid_namespaces(7), which says:
When a child process becomes orphaned, it is reparented to the "init"
process in the PID namespace of its parent (unless one of the nearer
ancestors of the parent employed the prctl(2) PR_SET_CHILD_SUBREAPER
command […]

A process that dies in a PID namespace could be reparented to its PID 1,
even if "the nearest still living ancestor subreaper" is another process
outside the namespace.

- Michael


-- System Information:
Debian Release: 12.0
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-8-amd64 (SMP w/32 CPU threads; PREEMPT)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8), LANGUAGE=en_CA:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages manpages-dev depends on:
ii manpages 6.03-1

manpages-dev recommends no packages.

Versions of packages manpages-dev suggests:
ii man-db [man-browser] 2.11.2-2

-- no debconf information
signature.asc
0 new messages