From: Steven Stewart-Gallus <sstewartgallus00-QKvm5KDIoDa7M0a00MdBSQ@public.gmane.org>
To: linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: execve is not atomic, what is the exit state of the process when execve fails after throwing away the original process image?
Date: Fri, 02 May 2014 02:19:52 +0000 (GMT) [thread overview]
Message-ID: <faa2c0e82f8a8.536300c8@langara.bc.ca> (raw)
Hello, can any kernel gurus please help me out with what happens on this weird
corner-case?
Quoting Rich Felker at http://ewontfix.com/14/:
> For common reasons it might fail, the execve syscall returns failure
> in the original process image, allowing the program to handle the
> error. However, failure of execve is not entirely atomic:
>
> The kernel may fail setting up the VM for the new process image
> after the original VM has already been destroyed; the main
> situation under which this would happen is resource exhaustion.
>
> Even after the kernel successfully sets up the new VM and
> transfers execution to the new process image, it's possible to
> have failures prior to the transfer of control to the actual
> application program. This could happen in the dynamic linker
> (resource exhaustion or other transient failures mapping required
> libraries or loading configuration files) or libc startup
> code. Using musl libc with static linking or even dynamic linking
> with no additional libraries eliminates these failure cases, but
> systemd is intended to be used with glibc.
execve is not atomic, what is the exit state of the process when
execve fails after throwing away the original process image?
I already have a hacky solution (see
https://gitorious.org/linted/linted/source/d25eac7a6fb58946ec8112771c0c56eb39fd1055:src/spawn/spawn.c)
to finding when a process fails before or at execve and now I want to
know what exit status is returned so I can give a nice error message.
next reply other threads:[~2014-05-02 2:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-02 2:19 Steven Stewart-Gallus [this message]
[not found] ` <faa2c0e82f8a8.536300c8-BTv7Ps/Sm75C8prJL3GQQw@public.gmane.org>
2014-05-03 17:45 ` execve is not atomic, what is the exit state of the process when execve fails after throwing away the original process image? Jann Horn
[not found] ` <20140503174510.GA7720-7cfQGs147y6a6lf8Wg2v7Z5kstrrjoWp@public.gmane.org>
2014-05-03 22:18 ` Steven Stewart-Gallus
[not found] ` <faa0c9e9297ad.53656b4c-BTv7Ps/Sm75C8prJL3GQQw@public.gmane.org>
2014-05-04 19:27 ` Michael Kerrisk (man-pages)
[not found] ` <53669485.3020007-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-05-04 20:15 ` Michael Kerrisk (man-pages)
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=faa2c0e82f8a8.536300c8@langara.bc.ca \
--to=sstewartgallus00-qkvm5kdioda7m0a00mdbsq@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.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.