On Sun 14 Dec 2008 00:59, l...@gnu.org (Ludovic Courtès) writes:

>> -  if (scm_i_critical_section_level)
>> +  if (SCM_I_CURRENT_THREAD->block_asyncs)
>
> It seems to me that "throw from within critical section" means precisely
> "throw when SCM_I_CRITICAL_SECTION_LEVEL is non-zero".  I don't see what
> asyncs have to do with that.

When scm_i_critical_section_level is nonzero, t->block_asyncs is
nonzero. The reverse is not true.

So... two options then: make this change, hoping that we don't get too
many throws when asyncs are blocked for other reasons... sounds not so
good. Or we remove the check entirely, hoping that there's not too much
erroneous code out there that this check would help. It seems like we
should do the latter, and in 1.9 make it a goal to remove critical
sections entirely, all 45 uses or so, replacing them with finer-grained
mutexen or redoing the code.

Andy
-- 
http://wingolog.org/


Reply via email to