A program of mine using guile-2.0.11 fails whenever a signal occurs
while a call to select is blocking, with this error:

  Backtrace:
  In ice-9/boot-9.scm:
   157: 9 [catch #t #<catch-closure 820f0a0> ...]
  In unknown file:
     ?: 8 [apply-smob/1 #<catch-closure 820f0a0>]
  In ice-9/boot-9.scm:
    63: 7 [call-with-prompt prompt0 ...]
  In ice-9/eval.scm:
   432: 6 [eval # #]
  In ice-9/boot-9.scm:
  2401: 5 [save-module-excursion #<procedure 821fd00 at ice-9/boot-9.scm:4045:3 
()>]
  4052: 4 [#<procedure 821fd00 at ice-9/boot-9.scm:4045:3 ()>]
  In unknown file:
     ?: 3 [load-compiled/vm 
"/home/chris/.cache/guile/ccache/2.0-LE-4-2.0/home/chris/src/event-loop.scm.go"]
  In /home/chris/src/./event-loop.scm:
   258: 2 [#<procedure 8767350 ()>]
    68: 1 [event-loop-run #<r6rs:record:event-loop>]
  In unknown file:
     ?: 0 [select (5) () () #<undefined> #<undefined>]

  ERROR: In procedure select:
  ERROR: In procedure select: Interrupted system call

According to the mailing list exchange at
http://lists.gnu.org/archive/html/guile-rpc-bugs/2014-05/msg00001.html ,
this was fixed in guile >= 2.0.10.  However it is still present (or back
as a regression) in guile-2.0.11.

The EINTR-safe wrapper mentioned in the mailing list exchange fixes it
for me in user code, but it would be nice if it were not necessary and
guile handled EINTR itself.



Reply via email to