kern/124471: lock order reversal on kldload/kldunload dtraceall

kevin kevinxlinuz at 163.com
Wed Jun 11 10:10:02 UTC 2008


>Number:         124471
>Category:       kern
>Synopsis:       lock order reversal on kldload/kldunload dtraceall
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jun 11 10:10:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     kevin
>Release:        8.0current
>Organization:
163.org
>Environment:
FreeBSD xxx-laptop.people.163.org 8.0-CURRENT FreeBSD 8.0-CURRENT #7: Wed Jun 11 14:49:40 CST 2008     root at xxx-laptop.people.163.org:/usr/obj/usr/src/sys/G8laptop  amd64

>Description:
lock order reversal:
 1st 0xffffff001be3c448 ufs (ufs) @ /usr/src/sys/kern/vfs_subr.c:2044
 2nd 0xffffffff806cd120 kernel linker (kernel linker) @ /usr/src/sys/kern/kern_linker.c:693
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
witness_checkorder() at witness_checkorder+0x5f3
_sx_xlock() at _sx_xlock+0x41
linker_file_lookup_set() at linker_file_lookup_set+0xcf
linker_file_register_sysctls() at linker_file_register_sysctls+0x20
linker_load_module() at linker_load_module+0x963
linker_load_dependencies() at linker_load_dependencies+0x1b4
link_elf_load_file() at link_elf_load_file+0x9ca
linker_load_module() at linker_load_module+0x919
linker_load_dependencies() at linker_load_dependencies+0x1b4
link_elf_load_file() at link_elf_load_file+0x9ca
linker_load_module() at linker_load_module+0x919
kern_kldload() at kern_kldload+0x92
kldload() at kldload+0x7a
syscall() at syscall+0x1dd
Xfast_syscall() at Xfast_syscall+0xab
--- syscall (304, FreeBSD ELF64, kldload), rip = 0x8006810cc, rsp = 0x7fffffffeaf8, rbp = 0 ---

lock order reversal:
 1st 0xffffffff806cd120 kernel linker (kernel linker) @ /usr/src/sys/kern/kern_linker.c:1024
 2nd 0xffffffffd7d788e0 dtrace_provider_lock (dtrace_provider_lock) @ /usr/src/sys/modules/dtrace/dtrace/../../../cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c:7450
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
witness_checkorder() at witness_checkorder+0x5f3
_sx_xlock() at _sx_xlock+0x41
dtrace_unregister() at dtrace_unregister+0x3b2
profile_unload() at profile_unload+0x15
linker_file_unload() at linker_file_unload+0x366
linker_file_unload() at linker_file_unload+0x1f9
kern_kldunload() at kern_kldunload+0xcc
syscall() at syscall+0x1dd
Xfast_syscall() at Xfast_syscall+0xab
--- syscall (444, FreeBSD ELF64, kldunloadf), rip = 0x8006803ac, rsp = 0x7fffffffe368, rbp = 0x12 ---

>How-To-Repeat:
kldload dtraceall after bootup, then kldunload dtraceall
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list