mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Roland McGrath <roland@redhat.com>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Ingo Molnar <mingo@redhat.com>, <linux-kernel@vger.kernel.org>
Subject: Re: another subtle signals issue
Date: Tue, 11 Feb 2003 19:13:33 -0800	[thread overview]
Message-ID: <200302120313.h1C3DX419736@magilla.sf.frob.com> (raw)
In-Reply-To: Linus Torvalds's message of  Tuesday, 11 February 2003 18:45:19 -0800 <Pine.LNX.4.44.0302111833120.2667-100000@home.transmeta.com>

> You probably mean ERESTARTSYSNOHAND.

Indeed, that's the right one for functions like semop that are specified in
1003.1-2001 explicitly to wake up when a signal was caught.  I read the
SA_RESTART wording as not intending to apply to functions that say that
explicitly.

> There are lots of system calls that simply are not restartable. 

POSIX permits partial results for cases like read and write.  Those aside,
and leaving aside calls in uninterruptible sleeps (in which stops take
place only after the sleep wakes), POSIX would seem to require that they be
restarted when there is a job control stop and continue.

> > The reason I am concerned about this is that I think any case that is
> > broken by the lack of the optimization in the patch below must also be
> > broken vis a vis the semantics of stop signals and SIGCONT (when SIG_DFL,
> > SIG_IGN, or blocked).  POSIX says that when a process is stopped by
> > e.g. SIGSTOP, and then continued by SIGCONT, any functions that were in
> > progress at the time of stop are unaffected unless SIGCONT runs a handler.
> > That is, nobody returns EINTR because of the stop/continue.
> 
> This is what ERESTARTNOHAND does [...]

ERESTARTSYS and ERESTARTNOHAND only differ when a handler is run,
which is not the case I am talking about.  

> The old code tried rather hard to make signals that were truly ignored 
> (SIGSTOP/SIGCONT is not of that kind)

POSIX clearly specifies that stopping and continuing "shall not affect the
behavior of any function" (when SIGCONT is SIG_DFL or SIG_IGN, or is blocked).


  parent reply	other threads:[~2003-02-12  3:03 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.44.0302111356550.1405-100000@penguin.transmeta.com>
2003-02-12  2:06 ` Roland McGrath
2003-02-12  2:45   ` Linus Torvalds
2003-02-12  3:05     ` Daniel Jacobowitz
2003-02-12  3:10       ` Linus Torvalds
2003-02-12  3:23         ` Roland McGrath
2003-02-12  3:38           ` Linus Torvalds
2003-02-12  3:13     ` Roland McGrath [this message]
2003-02-12  3:18       ` Linus Torvalds
2003-02-12  3:50         ` Roland McGrath
2003-02-12  4:21           ` Linus Torvalds
2003-02-12 20:12   ` Linus Torvalds
2003-02-12 21:11     ` Roland McGrath
2003-02-12 21:19       ` Linus Torvalds
2003-02-12 21:58         ` Roland McGrath
2003-02-12 21:42       ` Linus Torvalds
2003-02-12 22:04         ` Roland McGrath

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=200302120313.h1C3DX419736@magilla.sf.frob.com \
    --to=roland@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=torvalds@transmeta.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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®