With this:

 #!/usr/local/bin/python2.2

 import mmap
 m = mmap.mmap(-1,256,mmap.MAP_ANON)

 m = 1

I can panic the kernel:

 trap 12: page fault while in kernel mode --- supervisor read, page not
 present

 Stopped at: vm_map_clean+0x1ee: cmpl $0,0x40(%edi)

I dug around a bit with the debugger, and found the fault to lie in:

 /usr/src/sys/vm/vm_map.c : 1749

here's the right bit ( reformatted to fit on this page )

/*
 * Note that there is absolutely no sense in writing out
 * anonymous objects, so we track down the vnode object
 * to write out.
 * We invalidate (remove) all pages from the address space
 * anyway, for semantic correctness.
 */
   while (object->backing_object) {
     object = object->backing_object;
     offset += object->backing_object_offset;
     if (object->size < OFF_TO_IDX( offset + size))
                        size = IDX_TO_OFF(object->size) - offset;
                }

But: I can't be much more use, apart from noting that:

 size = 4096
 offset = -3621126458136592384
 object = 0x0
 object->backing_object --- can't access memory at 0x40

I take it that messing round with anonymous maps shouldn't panic the
kernel like this.

Q. + Should I submit a PR ?
   + can I supply anymore information ?


( It was mis-keying that caused the first panic, and I've reduced it
to the above lines of Python: I didn't set out with the above ! )

- Harry

-- 
Harry Newton
harry_newton at telinco.co.uk
www.gaudeamus.telinco.co.uk/html/gpg.html

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-stable" in the body of the message

Reply via email to