unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* bug#13018: fport_fill_input should handle EINTR
@ 2012-11-28  8:19 Aidan Gauland
  2012-11-29 20:19 ` Ludovic Courtès
  2013-03-05 17:57 ` Andy Wingo
  0 siblings, 2 replies; 7+ messages in thread
From: Aidan Gauland @ 2012-11-28  8:19 UTC (permalink / raw)
  To: 13018

Guile version: 3.2.0-4-amd64
OS: Debian wheezy GNU/Linux, kernel 3.2.0-4-amd64

In a program that maintains a TCP connection with a polling loop, I have
defined a signal handler with the `sigaction' procedure to terminate the
connection gracefully.  When the trapped signal is received (in this
case SIGINT) and the handler called, the following error message is
printed (full backtrace omitted):

ERROR: In procedure %read-line:
ERROR: In procedure fport_fill_input: Interrupted system call

I mentioned this on #guile on freenode and mark_weaver informed me that
I should be setting the SA_RESTART flag to avoid this problem, but that
there is a bug in Guile causing the error.

<mark_weaver> fport_fill_input should handle an EINTR error from 'read',
              and restart the read if that happens.

<mark_weaver> by default on some systems, signals cause 'read', 'write',
              and many other system calls to abort and return an EINTR
              error.

<mark_weaver> basically, at the POSIX level, every call to 'read' has to
              be within a little loop that takes care of the EINTR
              problem.

In short, I don't fully understand the innards to have an opinion on
whether this a bug or users should just set the SA_RESTART flag, bug
Mark assures me this is, indeed, a bug.  Any disagreement, take it up
with him. ;)

Regards,
Aidan Gauland





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-08-08 21:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-28  8:19 bug#13018: fport_fill_input should handle EINTR Aidan Gauland
2012-11-29 20:19 ` Ludovic Courtès
2013-03-13 11:44   ` Andy Wingo
2013-03-29  7:35     ` Aidan Gauland
2013-07-03 19:14     ` Mark H Weaver
2013-08-08 21:39       ` Mark H Weaver
2013-03-05 17:57 ` Andy Wingo

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 read-only IMAP folder(s) and NNTP newsgroup(s).