2013/6/5 Ludovic Courtès <[email protected]>

> [...]
>
> > Version: 1:7.1-8ubuntu0.12.04.1
>
> [...]
>
> >> Could you check whether the problem still occurs with Guile 2.0.9?
> >>
> >  It does (at least when linked against the same garbage collector)
>
> The documentation of ‘sleep’ is:
>
>   - Scheme Procedure: sleep i
>        Wait for the given number of seconds (an integer) or until a signal
>        arrives.  The return value is zero if the time elapses or the
>        number of seconds remaining otherwise.
>
> I’m pretty sure that if you check its return value, you’ll notice that
> it behaves as documented.  Can you confirm?
>
> What happens here is that libgc uses signals for stop-the-world
> collections, and (gc) certainly does with the libgc version you’re
> using.
>
> ‘sleep’ calls select(2), which in your case presumably returns
> prematurely with EINTR.  You should be able to confirm this hypothesis
> by running Guile with:
>
>   strace -f -e select guile
>
> (Note that the problem doesn’t occur with libgc 7.2, presumably because
> it uses a different strategy.)
>
>
Yes, you're right. Sleep does behave as documented, but I didn't expect
that gc might raise a signal.
Sorry for the confusion.
However, I replaced the libgc.so with a newly compiled one (7.2d) and
nothing changed, so I guess that the reason might be more casual

Thanks a lot

Reply via email to