NULL pointer deference in UMA (was: Re: new LOR to report...)
- From: Robert Watson <rwatson@xxxxxxxxxxx>
- Date: Thu, 26 Jan 2006 10:21:59 +0000 (GMT)
On Wed, 25 Jan 2006, John-Mark Gurney wrote:
Ok, just ran across a new LOR when trying to unload a module: lock order reversal: (sleepable after non-sleepable) 1st 0xc106c708 mt_zone (UMA zone) @ vm/uma_core.c:2448 2nd 0xc3934044 user map (user map) @ vm/vm_map.c:2993
This isn't a lock order reversal, it's a page fault. However, you get a report of a lock order reversal when the page fault handler grabs locks. Ideally, this wouldn't be the case.
To do anything useful, it would be helpful to have the line number in uma_zfree_arg() and uma_zfree_internal(), and also to know what you were kld unloading -- probably, it's a bug in the kld, which has torn down the UMA zone before calling free on a member of the zone.
Robert N M Watson
KDB: stack backtrace: kdb_backtrace(0,ffffffff,c070fb58,c070fa68,c06d122c) at kdb_backtrace+0x29 witness_checkorder(c3934044,9,c06ab0ce,bb1) at witness_checkorder+0x586 _sx_xlock(c3934044,c06ab0c5,bb1) at _sx_xlock+0x50 _vm_map_lock_read(c3934000,c06ab0c5,bb1,1d5d9dc,c3aa86e0) at _vm_map_lock_read+0x33 vm_map_lookup(d1d5da68,0,1,d1d5da6c,d1d5da5c) at vm_map_lookup+0x28 vm_fault(c3934000,0,1,0,c39db6c0) at vm_fault+0x66 trap_pfault(d1d5db84,0,15) at trap_pfault+0xce trap(8,28,28,0,c106c700) at trap+0x3a5 calltrap() at calltrap+0x5 --- trap 0xc, eip = 0xc060ecc4, esp = 0xd1d5dbc4, ebp = 0xd1d5dbd0 --- uma_zfree_internal(c106a960,c3b99000,0,1,3) at uma_zfree_internal+0xd0 uma_zfree_arg(c106a960,c3b99000,0) at uma_zfree_arg+0x348 malloc_uninit(c3b79980) at malloc_uninit+0xdc linker_file_sysuninit(c3ad1400,0,2,c3ad1400,c3aa8678) at linker_file_sysuninit+0x7d linker_file_unload(c3ad1400,0,0,c39db6c0,d1d5dc80) at linker_file_unload+0x116 kern_kldunload(c39db6c0,b,0,d1d5dd30,c065dc92) at kern_kldunload+0x7c kldunloadf(c39db6c0,d1d5dd04,c,c39db6c0,d1d5dd30) at kldunloadf+0x1e syscall(3b,3b,3b,b,bfbfe9be) at syscall+0x27e Xint0x80_syscall() at Xint0x80_syscall+0x1f --- syscall (444, FreeBSD ELF32, kldunloadf), eip = 0x280ba223, esp = 0xbfbfe41c, ebp = 0xbfbfe888 ---
Fatal trap 12: page fault while in kernel mode cpuid = 0; apic id = 00 fault virtual address = 0x15 fault code = supervisor read, page not present instruction pointer = 0x20:0xc060ecc4 stack pointer = 0x28:0xd1d5dbc4 frame pointer = 0x28:0xd1d5dbd0 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 790 (kldunload) [thread pid 790 tid 100080 ] Stopped at uma_zfree_internal+0xd0: movzbl 0x15(%ebx),%eax db> tr Tracing pid 790 tid 100080 td 0xc39db6c0 uma_zfree_internal(c106a960,c3b99000,0,1,3) at uma_zfree_internal+0xd0 uma_zfree_arg(c106a960,c3b99000,0) at uma_zfree_arg+0x348 malloc_uninit(c3b79980) at malloc_uninit+0xdc linker_file_sysuninit(c3ad1400,0,2,c3ad1400,c3aa8678) at linker_file_sysuninit+0x7d linker_file_unload(c3ad1400,0,0,c39db6c0,d1d5dc80) at linker_file_unload+0x116 kern_kldunload(c39db6c0,b,0,d1d5dd30,c065dc92) at kern_kldunload+0x7c kldunloadf(c39db6c0,d1d5dd04,c,c39db6c0,d1d5dd30) at kldunloadf+0x1e syscall(3b,3b,3b,b,bfbfe9be) at syscall+0x27e Xint0x80_syscall() at Xint0x80_syscall+0x1f --- syscall (444, FreeBSD ELF32, kldunloadf), eip = 0x280ba223, esp = 0xbfbfe41c, ebp = 0xbfbfe888 ---
I didn't see it on the list...
-- John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not." _______________________________________________ freebsd-current@xxxxxxxxxxx mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@xxxxxxxxxxx"
_______________________________________________ freebsd-current@xxxxxxxxxxx mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: NULL pointer deference in UMA (was: Re: new LOR to report...)
- From: John-Mark Gurney
- Re: NULL pointer deference in UMA (was: Re: new LOR to report...)
- References:
- new LOR to report...
- From: John-Mark Gurney
- new LOR to report...
- Prev by Date: Re: [TEST/REVIEW] CPU accounting patches
- Next by Date: Re: new LOR to report...
- Previous by thread: new LOR to report...
- Next by thread: Re: NULL pointer deference in UMA (was: Re: new LOR to report...)
- Index(es):