http://defect.opensolaris.org/bz/show_bug.cgi?id=14344



--- Comment #5 from Michael Hunter <michael.hunter at sun.com> 2010-02-03 
18:01:54 UTC ---
(In reply to comment #4)
> (In reply to comment #3)
> > 
> >         if (event != NULL && in_past(event->event_time)) {
> >                 uu_list_remove(event_queue, event);
> >                 uu_list_node_fini(event, &event->event_node, event_pool);
> >         } else {    
> >                 event = nwamd_event_init(NWAM_EVENT_TYPE_QUEUE_QUIET,
> >                     NWAM_OBJECT_TYPE_UNKNOWN, 0, NULL);
> >         }
> > 
> > If this is the only one then we can correct this part of it by moving the 
> > later
> > mutex unlock below the node_fini and above the event_init.
> 
> There's also the cases where we're processing link state/if_state events and 
> we
> enqueue an object state event, and when we are handling state events and
> enqueue additional state events (e.g. going offline*->online). The latter is
> what's happening in the sparc case, and I'm pretty sure I saw one resulting
> from a link state event triggering an object state event too.

I thought there were stacks stuck on the tail of the event queue that would be
free'd by my fix but that isn't true.

Better fix would be to go back to allocating in _init() as needed but putting
back into the pool.  Now the free pool grows to the right burst size and we can
still just pfail() if we can't get more memory.  It isn't quite so clean but it
still manages to fix the original problem.

-- 
Configure bugmail: http://defect.opensolaris.org/bz/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Reply via email to