Re: SMP assert failure in kern/vas.c

From: Andy Valencia From: <vandys_at_nospam.org>
Date: Sun May 30 2004 - 12:24:13 PDT

Warren Toomey <wkt@tuhs.org> writes:

>Actually I'm starting to suspect exec() or do_exit() as the root cause
>of the problem. The assert failure in detach_pview() isn't the only
>problem: we also see spurious M_DISCONNECT messages being sent to boot
>servers.

The exit() code path is historically a difficult one for SMP systems, so
there would be no surprise in finding a race involving it in VSTa.

>Both shut_client() and detach_pview() get called indirectly from exec()
>and do_exit(), and I'm only seeing the detach_pview() assert failure on
>a path from do_exit().

Ok, I would suggest two steps in pursuing this bug. First, you should
fully flesh out what kind of memory this is... text? Data? BSS? Heap
from malloc? Which process is exit()'ing? Does it have multiple threads?
Since this is address space tear-down, presumably it's the last thread.
You might want to verify that somehow. :-> When was the page created,
attached to the virtual address space, is the page shared between multiple
address spaces, and so forth.

Is it always the same slot of the same pview? If so, see if you can insert
code to catch the *first* time PP_V gets switched off. Who did it?

From here, you can probably paint a full picture of the race condition.
It's not jumping out at me yet.

Andy
Received on 30 May 2004 19:24:13 GMT

This archive was generated by hypermail 2.1.8 : Tue Sep 26 2006 - 09:03:12 PDT