On 2020-04-20 12:14, Martin Pieuchot wrote:
>> login: panic: kernel diagnostic assertion "!ISSET(rt->rt_flags,
>> RTF_LOCAL)" failed: file "/usr/src/sys/netinet6/nd6.c", line 727
>
> That means some part of the ND code is incorrectly setting an `expire'
> value to an entry that is local, and therefor should never expire.
>
> Could you try to reproduce the issue with the diff below? It should
> also panic but points us to the place where the bug is.
>
> [...]
With the diff applied, this is the panic message:
starting network
vio0: DAD detected duplicate IPv6 address fe80:1::1: NS in/out=0/1, NA in=1
vio0: DAD complete for fe80:1::1 - duplicate found
vio0: manual intervention required
reordering libraries:ndp info overwritten for fe80:1::1 by
76:fa:d3:57:ec:56 on vio0
panic: kernel diagnostic assertion "!ISSET(ln->ln_rt->rt_flags,
RTF_LOCAL)" failed: file "/usr/src/sys/netinet6/nd6.c", line 309
Stopped at db_enter+0x10: popq %rbp
TID PID UID PRFLAGS PFLAGS CPU COMMAND
*457148 43436 0 0x14000 0x200 0 softnet
db_enter() at db_enter+0x10
panic() at panic+0x128
__assert(ffffffff81c8d6ea,ffffffff81c94c17,135,ffffffff81c9fb69) at
__assert+0x
2b
nd6_llinfo_settimer(fffffd803ec6ff00,15180) at nd6_llinfo_settimer+0xdf
nd6_cache_lladdr(ffff8000000972a8,ffff800014a496a0,fffffd803714f874,8,86,0)
at n
d6_cache_lladdr+0x2be
nd6_rtr_cache(fffffd8036ee3000,28,38,86) at nd6_rtr_cache+0x31e
icmp6_input(ffff800014a499d8,ffff800014a499e4,3a,18) at icmp6_input+0x33d
ip_deliver(ffff800014a499d8,ffff800014a499e4,3a,18) at ip_deliver+0x1b3
ip6_input_if(ffff800014a499d8,ffff800014a499e4,29,0,ffff8000000972a8) at
ip6_in
put_if+0x8a7
ipv6_input(ffff8000000972a8,fffffd8036c8c200) at ipv6_input+0x39
ether_input(ffff8000000972a8,fffffd8036c8c200,0) at ether_input+0x1d3
if_input_process(ffff8000000972a8,ffff800014a49ac8) at if_input_process+0x8c
ifiq_process(ffff800000097648) at ifiq_process+0x69
taskq_thread(ffff800000022040) at taskq_thread+0x3d
end trace frame: 0x0, count: 1
https://www.openbsd.org/ddb.html describes the minimum info required in bug
reports. Insufficient info makes it difficult to find and fix bugs.
ddb> ps
PID TID PPID UID S FLAGS WAIT COMMAND
52319 220335 48472 0 2 0x100003 ar
48472 160852 1385 0 3 0x100089 pause sh
4518 212129 53183 115 3 0x100092 kqread slaacd
18367 312990 53183 115 3 0x100092 kqread slaacd
53183 69949 1 0 3 0x100080 kqread slaacd
1385 473193 1 0 3 0x10008b pause sh
35971 370200 0 0 3 0x14200 pgzero zerothread
99205 77666 0 0 3 0x14200 aiodoned aiodoned
74221 215874 0 0 3 0x14200 syncer update
70709 427908 0 0 3 0x14200 cleaner cleaner
64788 144629 0 0 3 0x14200 reaper reaper
12214 515539 0 0 3 0x14200 pgdaemon pagedaemon
92505 317381 0 0 3 0x14200 bored crynlk
76094 225660 0 0 3 0x14200 bored crypto
12517 102463 0 0 3 0x14200 fdprobe fdcattach
56081 234408 0 0 3 0x14200 bored viomb
37692 155909 0 0 3 0x14200 usbtsk usbtask
94142 69832 0 0 3 0x14200 usbatsk usbatsk
4210 166502 0 0 3 0x40014200 acpi0 acpi0
*43436 457148 0 0 7 0x14200 softnet
1013 500947 0 0 3 0x14200 bored systqmp
75108 420942 0 0 3 0x14200 bored systq
51573 324335 0 0 3 0x40014200 bored softclock
2368 335789 0 0 3 0x40014200 idle0
28301 80641 0 0 3 0x14200 bored smr
1 451792 0 0 3 0x82 wait init
0 0 -1 0 3 0x10200 scheduler swapper