All of lore.kernel.org
 help / color / mirror / Atom feed
From: bugzilla-daemon@kernel.org
To: linux-man@vger.kernel.org
Subject: [Bug 215769] man 2 vfork() does not document corner case when PID == 1
Date: Wed, 30 Mar 2022 00:48:27 +0000	[thread overview]
Message-ID: <bug-215769-11311-MvvLL9azed@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-215769-11311@https.bugzilla.kernel.org/>

https://bugzilla.kernel.org/show_bug.cgi?id=215769

--- Comment #1 from Alejandro Colomar (man-pages) (alx.manpages@gmail.com) ---
Hello Коренберг Марк,

On 3/29/22 13:02, bugzilla-daemon@kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=215769
> 
>             Bug ID: 215769
>            Summary: man 2 vfork() does not document corner case when PID
>                     == 1
>            Product: Documentation
>            Version: unspecified
>           Hardware: All
>                 OS: Linux
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: man-pages
>           Assignee: documentation_man-pages@kernel-bugs.osdl.org
>           Reporter: socketpair@gmail.com
>         Regression: No
> 
> If a process has PID=1 (for example in pid namespace), calling vfork() always
> returns EINVAL. (https://bugs.python.org/issue47151).
> 
> Please add this informtion in "RETURN VALUE" section or just in somewhere
> else
> in the manpage.
> 
> Actually, it may be a bug in Linux kernel, I don't know. Possibly because the
> init process must not be suspended ?

Sorry, but I couldn't reproduce it.  Could you please run the following
test program in the same system that you're experiencing the bug?

I run it on Debian Sid with kernel 5.16 and glibc 2.33:

$ uname -a
Linux ADY-debian-11 5.16.0-5-amd64 #1 SMP PREEMPT Debian 5.16.14-1
(2022-03-15) x86_64 GNU/Linux
$ /lib/x86_64-linux-gnu/libc.so.6 | head -n1
GNU C Library (Debian GLIBC 2.33-7) release release version 2.33.



$ cat vfork.c
#define _GNU_SOURCE
#include <err.h>
#include <sched.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
        pid_t pid;

        if (unshare(CLONE_NEWPID | CLONE_NEWNS) == -1)
                err(EXIT_FAILURE, "unshare(2)");
        if (signal(SIGCHLD, SIG_IGN) == SIG_ERR)
                err(EXIT_FAILURE, "sigaction(2)");
        pid = fork();
        switch (pid) {
        case 0:
                break;
        case -1:
                err(EXIT_FAILURE, "fork(2)");
        default:
                errx(EXIT_SUCCESS, "Parent exiting normally.");
        }
        if (getpid() != 1)
                errx(EXIT_FAILURE, "Child is not PID 1.");
        /* I'm not sure if I need to ignore it again, but just in case. */
        if (signal(SIGCHLD, SIG_IGN) == SIG_ERR)
                err(EXIT_FAILURE, "sigaction(2)");
        pid = vfork();
        switch (pid) {
        case 0:
                errx(EXIT_SUCCESS, "Grandchild exiting normally.");
        case -1:
                /* If we got here, the report is confirmed. */
                err(EXIT_FAILURE, "vfork(2)");
        default:
                errx(EXIT_SUCCESS, "Child exiting normally.");
        }
}
$ cc -Wall -Wextra vfork.c
$ sudo ./a.out
a.out: Parent exiting normally.
a.out: Grandchild exiting normally.
a.out: Child exiting normally.
$


If you can confirm the bug with this program, please send your system
details (most importantly, kernel and libc versions).


Thanks,

Alex

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.

  reply	other threads:[~2022-03-30  0:48 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-29 11:02 [Bug 215769] New: man 2 vfork() does not document corner case when PID == 1 bugzilla-daemon
2022-03-30  0:48 ` bugzilla-daemon [this message]
2022-03-30  1:00 ` [Bug 215769] " bugzilla-daemon
2022-03-31  7:53 ` bugzilla-daemon
2022-03-31  8:12 ` bugzilla-daemon
2022-04-02 21:15 ` bugzilla-daemon
2022-04-04  8:05 ` bugzilla-daemon
2022-04-05 11:37 ` bugzilla-daemon
2022-04-05 19:27 ` bugzilla-daemon
2022-04-06  5:44 ` bugzilla-daemon
2022-04-06  8:46 ` bugzilla-daemon
2022-04-06 17:13 ` bugzilla-daemon
2022-04-06 19:22 ` bugzilla-daemon
2022-04-08 10:55 ` [Bug 215769] vfork() returns EINVAL after unshare(CLONE_NEWTIME) bugzilla-daemon
2022-04-08 11:36 ` bugzilla-daemon
2022-04-11 15:36 ` bugzilla-daemon
2022-05-09 10:23 ` bugzilla-daemon
2022-09-06  8:32 ` bugzilla-daemon
2022-10-08  0:25 ` bugzilla-daemon
2022-10-08 18:52 ` bugzilla-daemon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-215769-11311-MvvLL9azed@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@kernel.org \
    --cc=linux-man@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.