Christian Kratzer wrote:> Hi Rick,
>
> there was also a second more recent crash in /var/crash
>
> Mon Oct 12 03:01:16 CEST 2015
>
> FreeBSD noc3.cksoft.de 10.2-STABLE FreeBSD 10.2-STABLE #2 r288980M:
Sun
> Oct 11 08:37:40 CEST 2015
> ck at noc3.cksoft.de:/usr/obj/usr/src/sys/NOC amd64
>
> panic: Assertion mtx_unowned(m) failed at
> /usr/src/sys/kern/kern_mutex.c:955
>
Oops, I screwed up. I should have looked at this panic assertion when you
reported
it before. Ok, so if I understand the assertion correctly, it means that another
thread has the mutex locked. If this is correct, I'll have to take another
look at
the code and figure out how to wait for these other threads to finish with the
mutexes.
I do think the patch fixes the race I saw, but there must be other races in the
code.
I'll take another look, but if anyone else is conversant with netsmb, feel
free to
jump in, because it is all new to me.
Unfortunately, I won't have any way to do testing for the next month or so,
so any
patches I do come up with will be "try this untested..".
rick
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 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 "amd64-marcel-freebsd"...
>
> Unread portion of the kernel message buffer:
> panic: Assertion mtx_unowned(m) failed at
> /usr/src/sys/kern/kern_mutex.c:955
> cpuid = 3
> KDB: stack backtrace:
> #0 0xffffffff80975bb0 at kdb_backtrace+0x60
> #1 0xffffffff8093baa6 at vpanic+0x126
> #2 0xffffffff8093b979 at kassert_panic+0x139
> #3 0xffffffff80921c47 at _mtx_destroy+0x77
> #4 0xffffffff81a1c174 at smb_iod_destroy+0xc4
> #5 0xffffffff81a12eea at smb_vc_free+0x1a
> #6 0xffffffff81a13e24 at sdp_trydestroy+0xb4
> #7 0xffffffff81a1cb96 at smbfs_unmount+0xd6
> #8 0xffffffff809d9e84 at dounmount+0x524
> #9 0xffffffff809d9936 at sys_unmount+0x3c6
> #10 0xffffffff80d42235 at amd64_syscall+0x265
> #11 0xffffffff80d25cfb at Xfast_syscall+0xfb
> Uptime: 8h44m10s
> Dumping 102 out of 999 MB:..16%..32%..47%..63%..78%..94%
>
> Reading symbols from /boot/kernel/smbfs.ko.symbols...done.
> Loaded symbols for /boot/kernel/smbfs.ko.symbols
> Reading symbols from /boot/kernel/libiconv.ko.symbols...done.
> Loaded symbols for /boot/kernel/libiconv.ko.symbols
> Reading symbols from /boot/kernel/libmchain.ko.symbols...done.
> Loaded symbols for /boot/kernel/libmchain.ko.symbols
> #0 doadump (textdump=<value optimized out>) at pcpu.h:219
> 219 pcpu.h: No such file or directory.
> in pcpu.h
> (kgdb) #0 doadump (textdump=<value optimized out>) at
pcpu.h:219
> #1 0xffffffff8093b5f2 in kern_reboot (howto=260)
> at /usr/src/sys/kern/kern_shutdown.c:451
> #2 0xffffffff8093bae5 in vpanic (fmt=<value optimized out>,
> ap=<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:758
> #3 0xffffffff8093b979 in kassert_panic (fmt=<value optimized
out>)
> at /usr/src/sys/kern/kern_shutdown.c:646
> #4 0xffffffff80921c47 in _mtx_destroy (c=0xfffff80002db5490)
> at /usr/src/sys/kern/kern_mutex.c:955
> #5 0xffffffff81a1c174 in smb_iod_destroy (iod=0xfffff80002db5400)
> at /usr/src/sys/modules/smbfs/../../netsmb/smb_iod.c:733
> #6 0xffffffff81a12eea in smb_vc_free (cp=0xfffff80002933000)
> at /usr/src/sys/modules/smbfs/../../netsmb/smb_conn.c:499
> #7 0xffffffff81a13e24 in sdp_trydestroy (sdp=0xfffff80002904140)
> at /usr/src/sys/modules/smbfs/../../netsmb/smb_dev.c:166
> #8 0xffffffff81a1cb96 in smbfs_unmount (mp=0xfffff80015226000,
> mntflags=<value optimized out>)
> at /usr/src/sys/modules/smbfs/../../fs/smbfs/smbfs_vfsops.c:297
> #9 0xffffffff809d9e84 in dounmount (mp=0xfffff80015226000,
> flags=134217728,
> td=0xfffff800151b0940) at /usr/src/sys/kern/vfs_mount.c:1313
> #10 0xffffffff809d9936 in sys_unmount (td=0xfffff800151b0940,
> uap=0xfffffe003d643b80) at /usr/src/sys/kern/vfs_mount.c:1205
> #11 0xffffffff80d42235 in amd64_syscall (td=0xfffff800151b0940,
> traced=0)
> at subr_syscall.c:134
> #12 0xffffffff80d25cfb in Xfast_syscall ()
> at /usr/src/sys/amd64/amd64/exception.S:396
> #13 0x000000080089190a in ?? ()
> Previous frame inner to this frame (corrupt stack?)
> Current language: auto; currently minimal
> (kgdb)
>
>
> Greetings
> Christian
>
>
>
>
>
>
>
>
>
>
> On Mon, 12 Oct 2015, Christian Kratzer wrote:
>
> > Hi Rick,
> >
> > On Sat, 10 Oct 2015, Rick Macklem wrote:
> >
> >> Hi again,
> >>
> >> Attached is a semantically equivalent patch to the one I posted a
few
> >> minutes ago, but I think this one is more readable.
> >>
> >> Please let me know if you get it tested, rick
> >
> > the box crashed again tonight with your patch applied. Here's the
new
> > crashinfo:
> >
> > panic: Assertion mtx_unowned(m) failed at
> > /usr/src/sys/kern/kern_mutex.c:955
> >
> > GNU gdb 6.1.1 [FreeBSD]
> > Copyright 2004 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 "amd64-marcel-freebsd"...
> >
> > Unread portion of the kernel message buffer:
> > panic: Assertion mtx_unowned(m) failed at
> > /usr/src/sys/kern/kern_mutex.c:955
> > cpuid = 2
> > KDB: stack backtrace:
> > #0 0xffffffff80975bb0 at kdb_backtrace+0x60
> > #1 0xffffffff8093baa6 at vpanic+0x126
> > #2 0xffffffff8093b979 at kassert_panic+0x139
> > #3 0xffffffff80921c47 at _mtx_destroy+0x77
> > #4 0xffffffff81a1c114 at smb_iod_destroy+0xc4
> > #5 0xffffffff81a12eea at smb_vc_free+0x1a
> > #6 0xffffffff81a13e24 at sdp_trydestroy+0xb4
> > #7 0xffffffff81a1cb36 at smbfs_unmount+0xd6
> > #8 0xffffffff809d9e84 at dounmount+0x524
> > #9 0xffffffff809d9936 at sys_unmount+0x3c6
> > #10 0xffffffff80d42235 at amd64_syscall+0x265
> > #11 0xffffffff80d25cfb at Xfast_syscall+0xfb
> > Uptime: 1d21h59m0s
> > Dumping 191 out of 999
> > MB:..9%..17%..26%..34%..42%..51%..67%..76%..84%..92%
> >
> > Here are the stackframes with line numbers:
> >
> > (kgdb) frame 0
> > #0 __curthread () at ./machine/pcpu.h:219
> > 219 __asm("movq %%gs:%1,%0" : "=r" (td)
> > (kgdb) frame 1
> > #1 doadump (textdump=<optimized out>) at
> > /usr/src/sys/kern/kern_shutdown.c:263
> > 263 dumptid = curthread->td_tid;
> > (kgdb) frame 2
> > #2 0xffffffff8093b5f2 in kern_reboot (howto=260) at
> > /usr/src/sys/kern/kern_shutdown.c:451
> > 451 doadump(TRUE);
> > (kgdb) frame 3
> > #3 0xffffffff8093bae5 in vpanic (fmt=<optimized out>,
ap=<optimized
> > out>) at /usr/src/sys/kern/kern_shutdown.c:758
> > 758 kern_reboot(bootopt);
> > (kgdb) frame 4
> > #4 0xffffffff8093b979 in kassert_panic (fmt=0xffffffff80e931ef
> > "Assertion %s failed at %s:%d") at
/usr/src/sys/kern/kern_shutdown.c:646
> > 646 vpanic(fmt, ap);
> > (kgdb) frame 5
> > #5 0xffffffff80921c47 in _mtx_destroy (c=0xfffff80002db5490) at
> > /usr/src/sys/kern/kern_mutex.c:955
> > 955 MPASS(mtx_unowned(m));
> > (kgdb) frame 6
> > #6 0xffffffff81a1c174 in smb_iod_destroy (iod=0xfffff80002db5400)
at
> > /usr/src/sys/modules/smbfs/../../netsmb/smb_iod.c:733
> > 733 smb_sl_destroy(&iod->iod_evlock);
> > (kgdb) frame 7
> > #7 0xffffffff81a12eea in smb_vc_free (cp=0xfffff80002933000) at
> > /usr/src/sys/modules/smbfs/../../netsmb/smb_conn.c:499
> > 499 smb_iod_destroy(vcp->vc_iod);
> > (kgdb) frame 8
> > #8 0xffffffff81a13e24 in sdp_trydestroy (sdp=0xfffff80002904140)
at
> > /usr/src/sys/modules/smbfs/../../netsmb/smb_dev.c:166
> > 166 smb_vc_rele(vcp, scred);
> > (kgdb) frame 9
> > #9 0xffffffff81a1cb96 in smbfs_unmount (mp=0xfffff80015226000,
> > mntflags=<optimized out>) at
> > /usr/src/sys/modules/smbfs/../../fs/smbfs/smbfs_vfsops.c:297
> > 297 sdp_trydestroy(dev);
> > (kgdb) frame 10
> > #10 0xffffffff809d9e84 in dounmount (mp=0xfffff80015226000,
> > flags=134217728, td=0xfffff800151b0940) at
> > /usr/src/sys/kern/vfs_mount.c:1313
> > 1313 error = VFS_UNMOUNT(mp, flags);
> > (kgdb)
> >
> > Let me know if you need anything else from the stackframes.
> >
> >
> > Greetings
> > Christian
> >
> >
> >
>
> --
> Christian Kratzer CK Software GmbH
> Email: ck at cksoft.de Wildberger Weg 24/2
> Phone: +49 7032 893 997 - 0 D-71126 Gaeufelden
> Fax: +49 7032 893 997 - 9 HRB 245288, Amtsgericht Stuttgart
> Mobile: +49 171 1947 843 Geschaeftsfuehrer: Christian Kratzer
> Web: http://www.cksoft.de/
> _______________________________________________
> freebsd-stable at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to "freebsd-stable-unsubscribe at
freebsd.org"
>