Subject: Re: KDASSERT(sa->sa_nstacks > 0); in sa_upcall_userret(struct lwp *l)
To: Lars Heidieker <lars@heidieker.de>
From: Nathan J. Williams <nathanw@wasabisystems.com>
List: current-users
Date: 02/10/2003 14:05:27
Lars Heidieker <lars@heidieker.de> writes:

> in the function sa_upcall_userret(struct lwp *l) / kern_sa.c there
> is a slight chance getting the KDASSERT(sa->sa_nstacks > 0); kicking
> in as after the "while (sa->sa_nstacks == 0)" loop checking the
> condtion tested in the assertion there is a chance of sleeping (sau
> = sadata_upcall_alloc(1);) so under extrem memroy pressure the
> system might panic (or later crash without the assertion)

Yes, I belive you are correct. I have moved the sadata_upcall_alloc()
routine to before the while loop to avoid this. Thanks for spotting
this; were you seeing the assertion fire, or just noticing it by
inspection?

        - Nathan