LOR & kernel trap
Slawa Olhovchenkov
slw at zxy.spb.ru
Thu Nov 20 17:28:08 PST 2003
I am build freebsd-current w/ cvs snap on 2003.11.11
and have some problem:
1. LOR
lock order reversal
1st 0xc1b05690 rtentry (rtentry) @ /usr/src/sys/net/rtsock.c:388
2nd 0xc15e187c radix node head (radix node head) @ /usr/src/sys/net/route.c:1114
Stack backtrace:
backtrace(c06126bc,c15e187c,c061775a,c061775a,c06177b0) at backtrace+0x17
witness_lock(c15e187c,8,c06177b0,45a,1) at witness_lock+0x672
_mtx_lock_flags(c15e187c,0,c06177b0,45a,c1b05690) at _mtx_lock_flags+0xba
rt_setgate(c1b05600,c1ad6440,c1b05b78,185,0) at rt_setgate+0x3b8
route_output(c0e11500,c16fc550,b0,c0e11500,1f50) at route_output+0x6aa
raw_usend(c16fc550,0,c0e11500,0,0) at raw_usend+0x73
rts_send(c16fc550,0,c0e11500,0,0) at rts_send+0x35
sosend(c16fc550,0,c6a8bc7c,c0e11500,0) at sosend+0x44d
soo_write(c1a01c38,c6a8bc7c,c1b74780,0,c1afd000) at soo_write+0x70
dofilewrite(c1afd000,c1a01c38,8,bfbfe870,b0) at dofilewrite+0xf8
write(c1afd000,c6a8bd10,c062c0e1,3ee,3) at write+0x6e
syscall(2f,2f,2f,8,3) at syscall+0x2c0
Xint0x80_syscall() at Xint0x80_syscall+0x1d
--- syscall (4), eip = 0x28283c2f, esp = 0xbfbfe65c, ebp = 0xbfbfe688 ---
2. kernel trap
cpuid = 0 acic id = 00
ip 0x8:0xc04955ed
sp 0x10:0xc6a8babc
fp 0x10:0xc6a8bac0
code segment base 0 limit fffff type 0x1b DPL 0 pres 1 def32 1 gran 1
eflags interrupt enabled IOPL = 0
current process 562 (ppp)
kernel: type 30 trap, code = 0
stopet at critical_exit+0x2d: jmp critical_exit+0x36
gdb -k /.1/obj/usr/src/sys/SLW/kernel.debug
GNU gdb 5.2.1 (FreeBSD)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-undermydesk-freebsd"...
(kgdb) l *0xc04955ed
0xc04955ed is in critical_exit (machine/cpufunc.h:358).
353 }
354
355 static __inline void
356 write_eflags(u_int ef)
357 {
358 __asm __volatile("pushl %0; popfl" : : "r" (ef));
359 }
360
361 static __inline void
362 wrmsr(u_int msr, u_int64_t newval)
--
Slawa Olhovchenkov
More information about the freebsd-current
mailing list