Re: LOR: so_snd @ /usr/src/sys/kern/uipc_coket.c:780

From: John Baldwin (jhb_at_freebsd.org)
Date: 11/29/05

  • Next message: Julian Elischer: "Re: em interrupt storm"
    To: freebsd-current@freebsd.org
    Date: Tue, 29 Nov 2005 16:29:07 -0500
    
    

    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) @ /usr/src/sys/kern/uipc_socket.c:780
    > 2nd 0xc0ac15ec tcp (tcp) @ /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 @
    > /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 @
    > /usr/src/sys/kern/uipc_socket.c:780
    > exclusive sleep mutex Giant r = 0 (0xc0a713c0) locked @
    > /usr/src/sys/kern/vfs_lookup.c:619
    > Process 54515 (cc1) thread 0xc5eac600 (100093)
    > exclusive sx user map r = 0 (0xc5fa2170) locked @
    > /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
    @@ -716,7 +716,7 @@
     }

     #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@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
    "Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
    _______________________________________________
    freebsd-current@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-current
    To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
    

  • Next message: Julian Elischer: "Re: em interrupt storm"
  • Quantcast