public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dan Kegel <dank@kegel.com>
To: Grant Taylor <gtaylor+lkml_ihdeh111902@picante.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [rfc] epoll interface change and glibc bits ...
Date: Tue, 19 Nov 2002 09:28:50 -0800	[thread overview]
Message-ID: <3DDA74D2.6080802@kegel.com> (raw)

Grant Taylor wrote:
> Meanwhile, in the more important caveat department (Dan, this will
> appeal to you), I found a while back that signals cause pain with
> epoll.
> 
> For example, sometimes TCP reads return EAGAIN when in fact they have
> data.  This seems to stem from the case where the signal is found
> before the first segment copy (from tcp.c circa 1425, there's even a
> handy FIXME note there).  If you use epoll and get an EAGAIN, you have
> no idea if it was a signal or a real empty socket unless you are also
> very careful to notice when you got a signal during the read.
 > ...
> 		/* We need to check signals first, to get correct SIGURG
> 		 * handling. FIXME: Need to check this doesnt impact 1003.1g
> 		 * and move it down to the bottom of the loop
> 		 */
> 		if (signal_pending(current)) {
> 			if (copied)
> 				break;
> 			copied = timeo ? sock_intr_errno(timeo) : -EAGAIN;
> 			break;
> 		}

eek!  Thanks for noticing that!

Jamie wrote:

> Mark's right, it should be EINTR.  EAGAIN shouldn't break any
> single-thread user state machines using poll/select, as a non-blocking
> read is always allowed to return EAGAIN for any transient reason.
> 
> I'm not sure if EAGAIN can cause a poll() wakeup event to be missed.
> If so, that would be a TCP bug that breaks epoll, and it would also
> break some user state machines using poll/select, when there are
> multiple processes waiting on a socket.

I guess we should scour the sources looking for ways read() and write()
can return EAGAIN, and make sure that there is no chance this causes
a hang in user state machines that rely on epoll.  (Sure would be nice
if the Stanford Checker was up to this kind of thing.)
- Dan




             reply	other threads:[~2002-11-19 16:58 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-19 17:28 Dan Kegel [this message]
  -- strict thread matches above, loose matches on Subject: below --
2002-11-19 19:33 [rfc] epoll interface change and glibc bits Grant Taylor
2002-11-19 19:51 ` Davide Libenzi
2002-11-19 20:57   ` Mark Mielke
2002-11-19 20:54     ` Davide Libenzi
2002-11-19  5:49 Grant Taylor
2002-11-19  6:22 ` Mark Mielke
2002-11-19 15:24   ` Jamie Lokier
     [not found] <20021118223125.GB14649@mark.mielke.cc>
2002-11-19  0:23 ` Grant Taylor
2002-11-19  3:58   ` Davide Libenzi
2002-11-19  4:04   ` Mark Mielke
2002-11-18 22:21 Dan Kegel
2002-11-18 23:09 ` Davide Libenzi
2002-11-18 23:39   ` Dan Kegel
2002-11-18 23:20     ` Davide Libenzi
2002-11-18 23:52       ` Dan Kegel
2002-11-18 23:35         ` Davide Libenzi
2002-11-19  0:53           ` Dan Kegel
2002-11-19  1:34             ` Davide Libenzi
2002-11-19  2:08               ` Dan Kegel
2002-11-19  2:04                 ` Davide Libenzi
2002-11-19  3:46           ` Edgar Toernig
2002-11-19  4:14             ` Davide Libenzi
2002-11-19  5:35               ` Edgar Toernig
2002-11-19  6:09                 ` Mark Mielke
2002-11-19 17:07                   ` Davide Libenzi
2002-11-20  1:59                 ` Davide Libenzi
2002-11-20  3:09                   ` Jamie Lokier
2002-11-20  3:46                     ` Davide Libenzi
2002-11-20  4:04                     ` Davide Libenzi
2002-11-20  8:01                       ` Mark Mielke
2002-11-20 23:19                         ` Davide Libenzi
2002-11-20 23:51                           ` Mark Mielke
2002-11-20 23:57                             ` Davide Libenzi
2002-11-21  0:28                               ` Jamie Lokier
2002-11-21  1:23                                 ` Mark Mielke
2002-11-21  1:20                                   ` Davide Libenzi
2002-11-21  0:33                               ` Mark Mielke
2002-11-21  0:55                                 ` Jamie Lokier
2002-11-21  1:04                                   ` Davide Libenzi
2002-11-21 20:08                                 ` Denis Vlasenko
2002-11-21 16:51                                   ` Mark Mielke
2002-11-21 17:45                                     ` Davide Libenzi
2002-11-20 22:04                       ` Jamie Lokier
2002-11-20 22:08                         ` Davide Libenzi
2002-11-20 23:28                           ` Jamie Lokier
2002-11-20 23:33                             ` Davide Libenzi
2002-11-20  7:47                     ` Mark Mielke
2002-11-19  3:53         ` Mark Mielke
2002-11-18 22:04 Grant Taylor
2002-11-18 22:32 ` Mark Mielke
2002-11-18 23:07 ` Davide Libenzi
2002-11-18 18:40 Grant Taylor
2002-11-18 16:05 Davide Libenzi
2002-11-18 16:12 ` Jakub Jelinek
2002-11-18 16:15   ` Davide Libenzi
2002-11-18 16:18     ` Jakub Jelinek
2002-11-18 16:32       ` Davide Libenzi
2002-11-18 22:22         ` Matthew D. Hall
2002-11-18 17:51 ` Mark Mielke
2002-11-18 18:37   ` Davide Libenzi
2002-11-18 19:59     ` Ulrich Drepper
2002-11-18 21:31       ` Davide Libenzi
2002-11-18 22:56         ` Jamie Lokier
2002-11-18 23:56           ` Davide Libenzi
2002-11-19  1:34             ` Jamie Lokier
2002-11-19  1:50               ` Davide Libenzi

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=3DDA74D2.6080802@kegel.com \
    --to=dank@kegel.com \
    --cc=gtaylor+lkml_ihdeh111902@picante.com \
    --cc=linux-kernel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox