On 2/12/19 8:53 AM, Pete French wrote:> I found my panic. If I take everything out of rc.conf and loader.conf
> and sysctl.conf and boot the system it works fine when I add an IP
> address. If I add this one line to sysctl.conf
>
> ????net.link.ether.inet.garp_rexmit_count=2
>
> Then I get a panic when I configure the interface:
>
> root at serpentine-passive:~ #? ifconfig igb0 inet 10.32.10.4/16 up
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address?? = 0x28
> fault code????????????? = supervisor read data, page not present
> instruction pointer???? = 0x20:0xffffffff80c987f1
> stack pointer?????????? = 0x28:0xfffffe00004d5730
> frame pointer?????????? = 0x28:0xfffffe00004d5750
> code segment??????????? = base 0x0, limit 0xfffff, type 0x1b
> ??????????????????????? = DPL 0, pres 1, long 1, def32 0, gran 1
> processor eflags??????? = interrupt enabled, resume, IOPL = 0
> current process???????? = 12 (swi4: clock (0))
> trap number???????????? = 12
> panic: page fault
> cpuid = 0
> time = 1549981620
> KDB: stack backtrace:
> #0 0xffffffff80bdfdc7 at kdb_backtrace+0x67
> #1 0xffffffff80b93fa3 at vpanic+0x1a3
> #2 0xffffffff80b93df3 at panic+0x43
> #3 0xffffffff8106a7bf at trap_fatal+0x35f
> #4 0xffffffff8106a819 at trap_pfault+0x49
> #5 0xffffffff81069e3e at trap+0x29e
> #6 0xffffffff810450c5 at calltrap+0x8
> #7 0xffffffff80c986f6 at ether_output+0x6b6
> #8 0xffffffff80d03354 at arprequest+0x4c4
> #9 0xffffffff80d0515c at garp_rexmit+0xbc
> #10 0xffffffff80bade19 at softclock_call_cc+0x129
> #11 0xffffffff80bae2f9 at softclock+0x79
> #12 0xffffffff80b57c57 at ithread_loop+0x1a7
> #13 0xffffffff80b54da2 at fork_exit+0x82
> #14 0xffffffff810460be at fork_trampoline+0xe
I see the same behavior on head (and stable/12).
(kgdb) f
#16 0xffffffff80ce5331 in ether_output_frame (ifp=0xfffff80003672800,
m=0xfffff8000c88b100) at /usr/src/sys/net/if_ethersubr.c:468
468 switch (pfil_run_hooks(V_link_pfil_head, &m, ifp, PFIL_OUT,
0xffffffff80ce5321 <+81>: mov %gs:0x0,%rax
0xffffffff80ce532a <+90>: mov 0x500(%rax),%rax
=> 0xffffffff80ce5331 <+97>: mov 0x28(%rax),%rax
I think this is part of the V_link_pfil_head. I'm not very familiar
with vnet. Does this need a CURVNET_SET(), maybe in garp_rexmit()?
Eric