Hello, Another instance of this assertion, on FreeBSD, with the same three conditions Danylo described (keep filtered, recursive next hop, change of the resolving route). It also confirms that removing "import keep filtered" makes it go away. Environment - FreeBSD 15.1-RELEASE-p5 amd64, GENERIC kernel - bird3-3.3.2_1 from the FreeBSD quarterly packages (ports commit 46cf3d9696491c61d91ecd22db11c7f7c1e62c24, built 2026-10-18) - edge router of AS209823: about 180 BGP sessions (two transits with full tables, IX peers and route servers at DE-CIX, ERA-IX, LocIX) 1.09M IPv4 and 253k IPv6 routes in the kernel - "import keep filtered" on about 130 eBGP channels - two iBGP sessions to route reflectors on loopback addresses (multihop, next hops resolved through OSPF) - default thread count. Tried once with Thread set to 8 Log : - 2026-10-18 21:33 UTC, bird3 3.4.0 (FreeBSD "latest" packages): Assertion '!new || rte_is_valid(new)' failed at nest/rt-table.c:1562 - 2026-10-19 07:18 UTC, 3.4.0 with "threads 8;": Assertion 'MSL_GET_STATE(ph) == slh_partial' failed at lib/mslab.c:789 - 2026-10-19 11:50 UTC: downgraded to 3.3.2, same config - 2026-10-19 11:55 to 2026-10-20 09:47 UTC: 15 aborts of 3.3.2, all on nest/rt-table.c:1562, SIGABRT, core dumped each time. The interval went down to 5 minutes at the end. Every abort lines up with an OSPF change of the route to one of the two route reflector loopbacks (a reflector was moved from a bhyve VM to a jail, then another router and its reflector were rebooted several times during an upgrade). Nothing else changed on the machine between aborts. A small route reflector (same 3.3.2 package, no keep filtered, no multihop) on the same host never aborted. To fix it, I removed every "import keep filtered" line and reconfigured. Since then the same triggers happened three more times (reflector loopback routes appearing and disappearing, a reboot of the neighbouring router) with no abort. Same change applied on two other edges running 3.3.1 and 3.3.2. Notes - The FreeBSD package binary is stripped, so gdb on the cores only shows a worker thread calling abort() . - With 3.3.2 only rt-table.c:1562 fired; the mslab.c:789 one was seen once, on 3.4.0 with 8 threads. Hope it helps, Benoit Chesneau AS209823 Benoît Chesneau - Enki multimedia t. +33608655490