httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dean Gaudet <dgau...@arctic.org>
Subject Re: assert evilness
Date Mon, 11 May 1998 18:02:02 GMT


On Mon, 11 May 1998, Ben Hyde wrote:

> Doesn't long jump happen during request processing
> as triggered by SIGPIPE?  
> 
> If so... modules must guard all cleanable
> data structures via pool cleanups all before
> writing to the request stream.

Right I've been complaining about this for a while... and it's fixed in
apache-nspr -- the only longjmp that happens in apache-nspr is one which
kills the entire thread (the only way to exit a thread is to return from
its startup function).  I can probably get rid of it too, I just haven't
bothered yet. 

The longjmp that happens in timeout() in 1.x is "safe" in most cases.  It
only happens when alarms are unblocked, so code does have the opportunity
to protect itself by using block_alarms()/unblock_alarms().  In fact folks
using 3rd party libraries should probably protect all library calls.  But
even if they do that, they'll still subject themselves to SIGALRM causing
EINTR... and some libraries may not deal with that well.

Dean



Mime
View raw message