>The attached program sometimes causes a lockmgr panic. I do not think is always
>did. I am running 4.0-CURRENT form Feb 19.
>
>The trace is:
> panic lockmgr: locking against self
> lockmgr
> mv_map_growstack
> grow_stack
> trap_pfault
> trap
> calltrap
> subyte
> syscall
> ...
>
>A command on a running image such as this usually does it, though I do not
>know what
>conditions are neccessary:
>
> fincore /usr/local/netscape-4.5/communicator-4.5.bin
Here is a simpler example.
---
#include <sys/param.h>
#include <sys/mman.h>
#include <err.h>
#include <stdlib.h>
#define SIZE (32 * 1024 * 1024)
int
main(void)
{
void *p;
char vec[SIZE / PAGE_SIZE];
p = malloc(SIZE);
if (mincore(p, SIZE, vec) != 0)
err(1, "mincore");
return (0);
}
---
mincore() locks the vmspace map, and initialises vec[] a byte at a time
using subyte(). When vec[] is sufficiently large, it is not all in core
initially and a page fault occurs in subyte(). The new stack growing
code locks the vmspace map early and panics.
Bruce
To Unsubscribe: send mail to [email protected]
with "unsubscribe freebsd-current" in the body of the message