Date: Thu, 15 Dec 2016 13:53:49 -0500 From: Kurt Lidl <lidl@pix.net> To: freebsd-hackers@freebsd.org Subject: Re: How to use sem_timedwait? Message-ID: <7a01e4c8-7d58-ad73-4107-4e14b9c89a9d@pix.net> In-Reply-To: <20161215171236.GU94325@kib.kiev.ua> References: <20161214074228.zh6q5zya2gszw4g6@hal9000.meka.no-ip.org> <1481748960.1889.398.camel@freebsd.org> <20161215002906.mllorgvvuovbdtze@hal9000.meka.no-ip.org> <1481775511.1889.450.camel@freebsd.org> <1481776532.1889.461.camel@freebsd.org> <44ad49f5-75ec-7c1d-28dc-25df08c67148@pix.net> <20161215171236.GU94325@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On 12/15/16 12:12 PM, Konstantin Belousov wrote: > On Thu, Dec 15, 2016 at 11:47:33AM -0500, Kurt Lidl wrote: >> When I run this code on a sparc64, it panics the machine! >> >> lidl@ton-148: ./x >> panic: trap: fast data access mmu miss (kernel) >> KDB: stack backtrace: >> vpanic() at vpanic+0xfc >> panic() at panic+0x20 >> trap() at trap+0x554 >> -- fast data access mmu miss tar=0xc09eda8f %o7=0xc039b344 -- >> userland() at filt_timerattach+0x78 >> user trace: trap %o7=0xc039b344 >> pc 0xc039b378, sp 0xedebe761 >> done >> KDB: enter: panic >> [ thread pid 1263 tid 100583 ] >> Stopped at kdb_enter+0x80: ta %xcc, 1 >> db> >> >> Oops. > Could you look up the source line for filt_timerattach+0x78 in your kernel ? I was able to do "call doadump" from ddb, and savecore worked. root@ton-136: kgdb /usr/obj/usr/src/sys/V120/kernel.debug /var/crash/vmcore.1 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 "sparc64-marcel-freebsd"... Unread portion of the kernel message buffer: panic: trap: fast data access mmu miss (kernel) KDB: stack backtrace: vpanic() at vpanic+0xfc panic() at panic+0x20 trap() at trap+0x554 -- fast data access mmu miss tar=0xc09eda8f %o7=0xc039b344 -- userland() at filt_timerattach+0x78 user trace: trap %o7=0xc039b344 pc 0xc039b378, sp 0xedebe761 done KDB: enter: panic No symbol "stopped_cpus" in current context. Reading symbols from /boot/kernel/zfs.ko...Reading symbols from /usr/lib/debug//boot/kernel/zfs.ko.debug...done. done. Loaded symbols for /boot/kernel/zfs.ko Reading symbols from /boot/kernel/opensolaris.ko...Reading symbols from /usr/lib/debug//boot/kernel/opensolaris.ko.debug...done. done. Loaded symbols for /boot/kernel/opensolaris.ko Reading symbols from /boot/kernel/geom_mirror.ko...Reading symbols from /usr/lib/debug//boot/kernel/geom_mirror.ko.debug...done. done. Loaded symbols for /boot/kernel/geom_mirror.ko Reading symbols from /boot/kernel/tmpfs.ko...Reading symbols from /usr/lib/debug//boot/kernel/tmpfs.ko.debug...done. done. Loaded symbols for /boot/kernel/tmpfs.ko Reading symbols from /boot/kernel/fdescfs.ko...Reading symbols from /usr/lib/debug//boot/kernel/fdescfs.ko.debug...done. done. Loaded symbols for /boot/kernel/fdescfs.ko #0 0x00000000c03f0040 in doadump (textdump=0) at /usr/src/sys/kern/kern_shutdown.c:297 297 savectx(&dumppcb); (kgdb) bt #0 0x00000000c03f0040 in doadump (textdump=0) at /usr/src/sys/kern/kern_shutdown.c:297 #1 0x00000000c0118f80 in db_fncall (dummy1=1, dummy2=false, dummy3=12289, dummy4=0xedebe410 "??????0\001") at /usr/src/sys/ddb/db_command.c:581 #2 0x00000000c0119484 in db_command (last_cmdp=0xc09ce890, cmd_table=0x0, dopager=1) at /usr/src/sys/ddb/db_command.c:453 #3 0x00000000c0119794 in db_command_loop () at /usr/src/sys/ddb/db_command.c:506 #4 0x00000000c011dfe0 in db_trap (type=<value optimized out>, code=0) at /usr/src/sys/ddb/db_main.c:248 #5 0x00000000c043a7c4 in kdb_trap (type=107, code=0, tf=0xedebe920) at /usr/src/sys/kern/subr_kdb.c:654 #6 0x00000000c07a3a28 in trap (tf=0xedebe920) at /usr/src/sys/sparc64/sparc64/trap.c:344 #7 0x00000000c0099060 in tl1_trap () #8 0x00000000c043a4e0 in kdb_enter (why=0x12 <Address 0x12 out of bounds>, msg=0xc091dfa8 "panic") at /usr/src/sys/kern/subr_kdb.c:442 #9 0x00000000c043a4c8 in kdb_enter (why=0xc091dfa8 "panic", msg=0xc091dfa8 "panic") at /usr/src/sys/kern/subr_kdb.c:441 #10 0x00000000c03f0888 in vpanic (fmt=0xc094cde0 "trap: %s (kernel)", ap=0xedebecf8) at /usr/src/sys/kern/kern_shutdown.c:752 #11 0x00000000c03f0908 in panic (fmt=0xc094cde0 "trap: %s (kernel)") at /usr/src/sys/kern/kern_shutdown.c:690 #12 0x00000000c07a3c9c in trap (tf=0xedebee60) at /usr/src/sys/sparc64/sparc64/trap.c:410 #13 0x00000000c0099060 in tl1_trap () #14 0x00000000c039b378 in filt_timerattach (kn=0x418937) at /usr/src/sys/kern/kern_event.c:675 ---Type <return> to continue, or q <return> to quit--- #15 0x00000000c039b34c in filt_timerattach (kn=0xfffff80016629e80) at /usr/src/sys/kern/kern_event.c:671 #16 0x00000000c039df24 in kqueue_register (kq=0xfffff800010da300, kev=0xedebf230, td=0xfffff800163fa000, waitok=0) at /usr/src/sys/kern/kern_event.c:1316 #17 0x00000000c039e4ec in kqueue_kevent (kq=0xfffff800010da300, td=0xfffff800163fa000, nchanges=1, nevents=1, k_ops=0xedebf5e8, timeout=0x0) at /usr/src/sys/kern/kern_event.c:1001 #18 0x00000000c039f15c in kern_kevent_fp (td=0xfffff800163fa000, fp=0xfffff80001e807d0, nchanges=1, nevents=1, k_ops=0xedebf5e8, timeout=0x0) at /usr/src/sys/kern/kern_event.c:1032 #19 0x00000000c039f21c in kern_kevent (td=0xfffff800163fa000, fd=3, nchanges=1, nevents=1, k_ops=0xedebf5e8, timeout=0x0) at /usr/src/sys/kern/kern_event.c:975 #20 0x00000000c039f3e0 in sys_kevent (td=0xfffff800163fa000, uap=0xedebf768) at /usr/src/sys/kern/kern_event.c:907 #21 0x00000000c07a2a8c in syscall (tf=0xedebf880) at subr_syscall.c:135 #22 0x00000000c0098e40 in tl0_intr () #23 0x0000000000000000 in ?? () (kgdb) up 14 #14 0x00000000c039b378 in filt_timerattach (kn=0x418937) at /usr/src/sys/kern/kern_event.c:675 675 ncallouts = atomic_load_explicit(&kq_ncallouts, memory_order_relaxed); (kgdb) list *0x00000000c039b378 0xc039b378 is in filt_timerattach (/usr/src/sys/kern/kern_event.c:675). 670 671 to = timer2sbintime(kn->kn_sdata, kn->kn_sfflags); 672 if (to < 0) 673 return (EINVAL); 674 675 ncallouts = atomic_load_explicit(&kq_ncallouts, memory_order_relaxed); 676 do { 677 if (ncallouts >= kq_calloutmax) 678 return (ENOMEM); 679 } while (!atomic_compare_exchange_weak_explicit(&kq_ncallouts, This machine is running a stock -head built from a git clone: root@ton-141: uname -a FreeBSD ton.pix.net 12.0-CURRENT FreeBSD 12.0-CURRENT #23 b853a21(master): Sat Dec 3 15:38:11 EST 2016 lidl@ton.pix.net:/usr/obj/usr/src/sys/V120 sparc64 With no changes, except for a custom kernel configuration file. -Kurt
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7a01e4c8-7d58-ad73-4107-4e14b9c89a9d>