Subject: bug#13018: closed (Re: bug#13018: fport_fill_input should handle EINTR)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 08 Aug 2013 21:41:02 +0000

Your bug report

#13018: fport_fill_input should handle EINTR

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
13018: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13018
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#13018: fport_fill_input should handle EINTR
From: Mark H Weaver <[email-masked]>
To: Aidan Gauland <[email-masked]>
Cc: [email-masked]
Date: Thu, 08 Aug 2013 17:39:57 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

This bug was fixed in fe51c7b3e0a1e93be3bb81dd2d4b18936fe2df3a.

    Thanks!
      Mark

Subject: fport_fill_input should handle EINTR
From: Aidan Gauland <[email-masked]>
To: [email-masked]
Date: Wed, 28 Nov 2012 21:19:06 +1300
List-Id: <debbugs-submit.debbugs.gnu.org>

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