Turns out one of the crashes that was found by Larry Rosenman in rack was not a rack
bug at all but a crash when the hpts system was trying to lock the INFO lock. It is
missing a vnet set and so with vnets enabled "boom".
This fixes that.
Differential D15757
HPTS Is missing some support for Vnets rrs on Jun 11 2018, 12:35 PM. Authored by Tags None Referenced Files
Details
Turns out one of the crashes that was found by Larry Rosenman in rack was not a rack This fixes that. I have given Larry a patch to test for both rack and hpts. Enabling
Diff Detail
Event TimelineComment Actions I've got this and D15758 running on my home box since: We'll see Comment Actions I think there are more changes needed. For example, the INP_INFO lock which is dropped on line 1260 is acquired on line 1220. If you don't set the VNET prior to that, you could end up acquiring and dropping different locks. (Keep in mind that tcbinfo itself is a VNET'd variable.) That wouldn't be good. Comment Actions I got another crash even with this: Mon Jun 11 09:42:19 CDT 2018 FreeBSD borg.lerctr.org 12.0-CURRENT FreeBSD 12.0-CURRENT #37 r334925M: Mon Jun 11 08:08:06 CDT 2018 root@borg.lerctr.org:/usr/obj/usr/src/amd64.amd64/sys/VT-LER amd64 panic: page fault GNU gdb (GDB) 8.1 [GDB v8.1 for FreeBSD] Unread portion of the kernel message buffer: Fatal trap 12: page fault while in kernel mode = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0
tcp_input_data() at tcp_input_data+0xb3/frame 0xfffffe344db4ea60
Uptime: 1h10m42s curthread () at ./machine/pcpu.h:231 at /usr/src/sys/kern/kern_shutdown.c:446 #3 0xffffffff80b84ab3 in vpanic (fmt=<optimized out>, ap=0xfffffe344db4e740) at /usr/src/sys/kern/kern_shutdown.c:863 #4 0xffffffff80b84b03 in panic (fmt=<unavailable>) at /usr/src/sys/kern/kern_shutdown.c:790 #5 0xffffffff8105b6ff in trap_fatal (frame=0xfffffe344db4e930, eva=40) at /usr/src/sys/amd64/amd64/trap.c:892 #6 0xffffffff8105b759 in trap_pfault (frame=0xfffffe344db4e930, usermode=0) at /usr/src/sys/amd64/amd64/trap.c:728 #7 0xffffffff8105ad7a in trap (frame=0xfffffe344db4e930) at /usr/src/sys/amd64/amd64/trap.c:427 #8 <signal handler called> tv=0xfffffe344db4ead0) at /usr/src/sys/netinet/tcp_hpts.c:1220 #10 0xffffffff80da57f7 in tcp_hptsi (hpts=<optimized out>, ctick=0x1092) at /usr/src/sys/netinet/tcp_hpts.c:1686 #11 tcp_hpts_thread (ctx=<optimized out>) at /usr/src/sys/netinet/tcp_hpts.c:1810 #12 0xffffffff80b46369 in intr_event_execute_handlers (p=<optimized out>, ie=0xfffff801ac300700) at /usr/src/sys/kern/kern_intr.c:1013 #13 0xffffffff80b46a57 in ithread_execute_handlers (ie=<optimized out>, p=<optimized out>) at /usr/src/sys/kern/kern_intr.c:1026 #14 ithread_loop (arg=0xfffff801ac31c700) at /usr/src/sys/kern/kern_intr.c:1106 #15 0xffffffff80b43754 in fork_exit ( callout=0xffffffff80b469a0 <ithread_loop>, arg=0xfffff801ac31c700, frame=0xfffffe344db4ec00) at /usr/src/sys/kern/kern_fork.c:1039 #16 <signal handler called> |