Subject: Re: gif can cause kernel to hang
To: Greg Troxel <gdt@ir.bbn.com>
From: Jeff Rizzo <riz@boogers.sf.ca.us>
List: tech-net
Date: 02/10/2004 13:33:24
On Tue, Feb 10, 2004 at 04:18:32PM -0500, Greg Troxel wrote:
> 
> Since we no longer have a single call chain with the deferred soft
> interrupts, we need to bundle a closure with a binding to the static
> variable, perhaps using an extension of Jonathan Stone's continuations.

Heh... I saw the continuations proposal and promptly filed it under
"read this again when I understand more".

> (define (soft-intr-thunk)
>   (let 
>     ((giflevel 0))
>     (lambda ()
>       [do-soft-intr code that refers to giflevel])))

network drivers in LISP, eh?  :)

> 
> But seriously, one could try to attach some sort of 'gif-level'
> property to the mbuf and have gif_output increment that.  This seems
> pretty gross, but the original nesting detection is also bit of a
> kludge.  And, as the comment says, it was never MP-safe.

That's the thought that came to my mind, as well, but I don't exactly
know the rules about what's kosher to do and what isn't...

> 
> Perhaps we should consider not using deferred interrupts on gifs as an
> interim measure.

What kind of performance hit would be entailed?  I don't entirely
understand the implementation of deferred interrupts yet (though I'm
furiously reading log entries to try and learn).  I'd hate to impact
performance to work around this problem than only occurs during a
misconfiguration...

+j
-- 
Jeff Rizzo                                         http://boogers.sf.ca.us/~riz