mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Alexander Monakov <amonakov@ispras.ru>
To: musl@lists.openwall.com
Subject: Re: [PATCH] re-fix child reaping in wordexp
Date: Mon, 5 Feb 2018 20:07:44 +0300 (MSK)	[thread overview]
Message-ID: <alpine.LNX.2.20.13.1802051936460.25773@monopod.intra.ispras.ru> (raw)
In-Reply-To: <20180205162715.GW1627@brightrain.aerifal.cx>

On Mon, 5 Feb 2018, Rich Felker wrote:
> > In general retrying waitpid on EINTR is not robust in case pid reuse is
> > possible, but fixing that requires changing waitpid call sites to only
> > do that with signals blocked (where that's not already the case).
> 
> I don't follow this. Unless there's a bug in the kernel, this should
> not be functionally different from SA_RESTART. A return with EINTR
> means the child was not reaped.

The problem I had in mind is that you don't know if a signal handler or
another thread had (yes, incorrectly) already reaped that child when you
are about to retry waitpid.

With signals blocked, you issue just one waitpid, and you need very rapid
pid reuse to happen, after someone successfully reaps your child
even before you enter waitpid.

Of course this is a bit moot since the other thread/sighandler shouldn't
be issuing wildcard waits in the first place, and if rapid pid reuse
does not happen you safely leave the retry loop with ECHILD. But this is
why I said "not robust" rather than "incorrect".

Alexander


  reply	other threads:[~2018-02-05 17:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-05 14:38 Alexander Monakov
2018-02-05 16:27 ` Rich Felker
2018-02-05 17:07   ` Alexander Monakov [this message]
2018-02-05 17:27     ` Rich Felker
2018-02-05 20:18       ` Alexander Monakov
2018-02-05 20:44         ` Rich Felker

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=alpine.LNX.2.20.13.1802051936460.25773@monopod.intra.ispras.ru \
    --to=amonakov@ispras.ru \
    --cc=musl@lists.openwall.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).