Re: FreeBSD-main-amd64-test - Build #28023 - Still Failing

From: Gleb Smirnoff <glebius_at_freebsd.org>
Date: Thu, 12 Mar 2026 19:42:35 UTC
On Thu, Mar 12, 2026 at 06:48:03PM +0000, jenkins-admin@FreeBSD.org wrote:
j> panic: CURVNET_SET at /usr/src/sys/netinet6/nd6_nbr.c:1680 nd6_queue_timer() curvnet=0 vnet=0xfffff8000d121a40
j> cpuid = 1
j> time = 1773341283
j> KDB: stack backtrace:
j> db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe008bc5dc00
j> vpanic() at vpanic+0x136/frame 0xfffffe008bc5dd30
j> panic() at panic+0x43/frame 0xfffffe008bc5dd90
j> nd6_queue_timer() at nd6_queue_timer+0x207/frame 0xfffffe008bc5de10
j> softclock_call_cc() at softclock_call_cc+0x19b/frame 0xfffffe008bc5dec0
j> softclock_thread() at softclock_thread+0xc6/frame 0xfffffe008bc5def0
j> fork_exit() at fork_exit+0x82/frame 0xfffffe008bc5df30
j> fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe008bc5df30
j> --- trap 0, rip = 0, rsp = 0, rbp = 0 ---
j> KDB: enter: panic

Some other callout had returned without clearing td_vnet, e.g. calling
CURVNET_RESTORE(). I don't think either of our recent commits caused that,
neither I think that Pouria's recent changes to nd6_queue_timer() did.

The easiest way to catch that would be to add assertion into
softclock_call_cc() after the callout returned.  Who runs the CI?  What is the
easiest way to reproduce this with the assertion without committing it to main?

-- 
Gleb Smirnoff