Date: Sun, 28 Feb 1999 23:52:57 +1100 From: Bruce Evans <bde@zeta.org.au> To: current@FreeBSD.ORG, pangolin@home.com Subject: Re: lockmgr panic with mmap() Message-ID: <199902281252.XAA24877@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902281252.XAA24877>
