Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: ARP panic in HEAD
Manuel Bouyer <bouyer%antioche.eu.org@localhost> writes:
> I just got a panic in a current kernel (updated today)
> [ 7710.0533258] panic: kernel diagnostic assertion "op == ARPOP_REPLY || op == ARPOP_REQUEST" failed: file "/dsk/l1/misc/bouyer/HEAD/clean/src/sys/netinet/if_arp.c", line 801
> [ 7710.0996509] cpu0: Begin traceback...
> [ 7710.1108929] vpanic() at netbsd:vpanic+0x18d
> [ 7710.1236555] kern_assert() at netbsd:kern_assert+0x61
> [ 7710.1340323] in_arpinput() at netbsd:in_arpinput+0x4b9
> [ 7710.1553295] arpintr() at netbsd:arpintr+0x12e
> [ 7710.1646365] softint_dispatch() at netbsd:softint_dispatch+0x124
> [ 7710.1891263] DDB lost frame for netbsd:Xsoftintr+0x4c, trying 0xffffde00695cd0f0
> [ 7710.2147638] Xsoftintr() at netbsd:Xsoftintr+0x4c
> [ 7710.2272680] --- interrupt ---
No but a quick ksrccode_skim() reveals:
in_arpinput(), which appears to process an mbuf with contents taht
arrrived over the wire, has
KASSERT(op == ARPOP_REPLY || op == ARPOP_REQUEST);
and this is "obviously wrong" as asserts are only for internal
consistency checks (things you think you should be able to prove by
static analysis, ish). If the incoming packet has a bad opcode, that
should just be cause to discard the packet and probably increment some
stat counter. However.... arpintr has that same check with a
discard/statinc, and only calls in_arpinput if it's one of those two.
So it's fine. This is confusing because in_arpinput doesn't document
the precondition. I'd wonder if it were called from elsewhere, but
your stack trace shows it from arpintr.
This was changed in July by riastradh@. I read the code in arpintr and
in_arpinput and I can't see anything wrong.
I wonder
- if your system is MP, and if you have any non-default MPSAFE stuff
- are there hosts on your LAN trying to do trailers (cue vax
flashbacks)?
- what did you update from?
- how many times has it happened
- did you get a crash dump, and what is in the arp packet in the mbuf?
What's ar_op? ar_pro? Is it otherwise sane?
Home |
Main Index |
Thread Index |
Old Index