NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/44788: mlock(2) panic
>Number: 44788
>Category: kern
>Synopsis: mlock(2) panic
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Mar 29 11:10:06 +0000 2011
>Originator: Jukka Ruohonen
>Release: 5.99.48
>Organization:
-
>Environment:
>Description:
While testing the robustness of mlock(2), the following assertion was
easily caught:
panic: kernel diagostic assertion "entry1->start < splitat" failed: file
"/usr/src/sys/uvm/uvm_map.c", line 10660
fatal breakpoint trap in supervisor mode
...
db{1}> bt
breakpoint() at netbsd:breakpoint+0x5
panic() at netbsd:panic+0x2b6
kern_assert() at netbsd:kern_assert+0x2d
uvm_mapentt_splitadj() at netbsd:uvm_mapent_splitadj+0xcf
uvm_map_cip_end() at netbsd:uvm_map_clip_end+0x3c
uvm_map_pageable() at netbsd:uvm_map_pageable+0x27f
sys_mlock() at netbsd:sys_mlock+0xa0
syscall() at netbsd:syscall0xaa
>How-To-Repeat:
#include <sys/mman.h>
#include <stdlib.h>
#include <unistd.h>
int
main(void)
{
void *buf;
long page;
size_t i;
page = sysconf(_SC_PAGESIZE);
if (page != 4096)
abort();
if ((buf = malloc(page)) == NULL)
abort();
for (i = page; i >= 1; i = i - 1024) {
(void)mlock(buf, page - i);
(void)munlock(buf, page - i);
}
return 0;
}
>Fix:
Unknown.
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index