[Gc] Signals / EINTR loop

Nicolas Cannasse ncannasse at motion-twin.com
Thu Aug 7 03:06:53 PDT 2008


>> The problem is that after that, each next call to recv() immediatly 
>> returns with -1 + EINTR again, so we are entering an infinite loop that 
>> takes full CPU (shared between User and System).
[...]
> First, during configuration, we check if GC_start_blocking/GC_stop_blocking
> or GC_do_blocking is available. Then, around any call that *must not* be
> interrupted we use a sequence such as:

Thanks a lot, that was very helpful and seems like it fixed it. Is there 
somewhere a list of functions that are reentrant but not signal-safe ?

Also, we don't have the problem with pthread_cond_wait, but maybe using 
GC_do_blocking for it as well might improve performances when GC needs 
to stop the world. Would you recommend it ?

Thanks a lot to to Hans Boehm for the great GC. We upgraded recently 
from 6.8 to 7.1 and performances have been noticeably improved.

Best,
Nicolas



More information about the Gc mailing list