On Tuesday 29 November 2005 03:08 pm, Mark Atkinson wrote: > this one seems new, and doesn't seem to match anything on the known > list. Typed by hand. Single processor, no hyperthreading. The last > thing it was doing was doing a 'test' command on a file over nfs. > > Lock order reversal: > 1st 0xc5ef0ec so_snd (so_snd) _at_ /usr/src/sys/kern/uipc_socket.c:780 > 2nd 0xc0ac15ec tcp (tcp) _at_ /usr/src/sys/netinet/tcp_usrreq.c:580 > KDB: stack backstrace: > kdb_backtrace() at kdb_backtrace+0x2e > witness_checkorder() at witness_checkorder+0x6d3 > _mtx_lock_flags() at _mtx_lock_flags+0x8a > tcp_usr_shutdown() at tcp_usr_shutdown+0x3d > soshutdown() at soshutdown+0x41 > nfs_disconnect() at nfs_disconnect+0xd5 > nfs_reconnect() at nfs_reconnect+0x1c > nfs_reply() at nfs_reply+0x170 > nfs_request() at nfs_request+0x451 > nfs3_access_otw() at nfs3_access_otw+0xde > nfs_access() at nfs_access+0x120 > VOP_ACCESS_APV() at VOP_ACCESS_APV+0xac > nfs_lookup() at nfs_lookup+0xe5 > VOP_LOOKUP_APV() at VOP_LOOKUP_APV+0xb4 > lookup() at lookup+0x468 > namei() at namei+0x468 > kern_stat() at kern_stat+0x3d > stat() at stat+0x2f > syscall() at Xint0x80_syscall+0x1f > --- syscall (188, FreeBSD ELF32, stat, eip = 0x2819ad63, esp = > 0xbfbfe8cc, ebp = 0xbfbfe9c8 --- > panic: _mtx_lock_sleep: recursed on non-recursive mutex so_snd _at_ > /usr/src/sys/kern/uipc_socket.c:391 > > cpuid = 0 > KDB: enter: panic > Stopped at kdb_enter+0x30: leave > db> > db> show alllocks > Process 54517 (sh) thread 0xc5f1fd80 (100100) > exclusive sleep mutex so_snd r = 0 (0xc5aef0ec) locked _at_ > /usr/src/sys/kern/uipc_socket.c:780 > exclusive sleep mutex Giant r = 0 (0xc0a713c0) locked _at_ > /usr/src/sys/kern/vfs_lookup.c:619 > Process 54515 (cc1) thread 0xc5eac600 (100093) > exclusive sx user map r = 0 (0xc5fa2170) locked _at_ > /usr/src/sys/vm/vm_map:2996 Try this patch: Index: uipc_socket.c =================================================================== RCS file: /usr/cvs/src/sys/kern/uipc_socket.c,v retrieving revision 1.254 diff -u -r1.254 uipc_socket.c --- uipc_socket.c 28 Nov 2005 21:45:36 -0000 1.254 +++ uipc_socket.c 29 Nov 2005 21:28:16 -0000 _at__at_ -716,7 +716,7 _at__at_ } #define SBLOCKWAIT(f) (((f) & MSG_DONTWAIT) ? M_NOWAIT : M_WAITOK) -#define snderr(errno) { error = (errno); goto out; } +#define snderr(errno) { error = (errno); goto release; } /* * Send on a socket. -- John Baldwin <jhb_at_FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.orgReceived on Tue Nov 29 2005 - 20:29:45 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:48 UTC