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