Hi,

"Linas Vepstas" <[EMAIL PROTECTED]> writes:

> Anyway, I have an even simpler variant, with only *one*
> thread deadlocked in gc.    Here's the scenario:
>
> thread A:
>    scm_init_guile();
>    does some other stuff, then
>    goes to sleep in select, waiting on socket input
>    (as expected).
>
> thread B:
>    scm_init_guile() -- hangs here.

Just to be sure: do you use raw select(2), `scm_std_select ()', or
select(2) within `scm_without_guile ()'?

The first option would lead to the situation you're observing because
Guile's GC requires thread to cooperate, which is why
`scm_without_guile' exists (info "(guile) Blocking").  You should use
one of the other options.

Ludo'.



Reply via email to