bisecting it got me the bug being introduced in 182a97f5e6aaeb5fac2859bb30889d88275898c8
On Mon, 13 Jul 2026 11:30:27 +0200 Mariusz Gronczewski <[email protected]> wrote: > On Fri, 10 Jul 2026 18:31:42 +0200 > Maria Matejka <[email protected]> wrote: > > > This smells of a runaway hostentry resolution cycle or something > > like that. Do you have some "minimal reproducer" then, which causes > > this godzilla to emerge? It is probably not easy to fix but we'd > > like to try. > > > > Thanks! > > Try the attached config. Thankfully it appears to be reproducible with > no dependencies. It appears to be Bird2 -> 3 regression I have tested > on 3.3.1 and on 3.1.7 vs 2.19.1 (both from Debian) > > It's a static protocol with few routes with different preferences > attached to a separate table and the routes are moved off this table > to the master one via pipe protocol. > > Now, if static is attached directly to table it works fine. But doing > it thru pipe starts the loop: > > bird> show memory > BIRD memory usage > Effective Overhead > Routing tables: 11.8 MB 1145.0 kB > Route attributes: 12.8 MB 252.9 kB > Protocols: 39.3 kB 3520.0 B > Current config: 8351.0 B 504.0 B > Standby memory: 0.0 B 188.0 kB > Total: 24.8 MB 1628.1 kB > > Active pages: 25.6 MB > Kept free pages: 188.0 kB > Cold free pages: 0.0 B > Hot page cache depleted while in RCU: 0 > bird> show memory > BIRD memory usage > Effective Overhead > Routing tables: 12.5 MB 1213.2 kB > Route attributes: 13.5 MB 263.5 kB > Protocols: 39.3 kB 3520.0 B > Current config: 8351.0 B 504.0 B > Standby memory: 0.0 B 200.0 kB > Total: 26.3 MB 1718.9 kB > > Active pages: 27.1 MB > Kept free pages: 200.0 kB > Cold free pages: 0.0 B > Hot page cache depleted while in RCU: 0 > bird> show route count > 5 of 5 routes for 1 networks in table master4 > 0 of 0 routes for 0 networks in table master6 > Total: 5 of 5 routes for 1 networks in 2 tables > > and disabling the pipe stops it > > bird> disable pipe_generated > pipe_generated: disabled > bird> show memory > BIRD memory usage > Effective Overhead > Routing tables: 295.1 kB 29.3 kB > Route attributes: 28.4 kB 59.5 kB > Protocols: 7217.0 B 2048.0 B > Current config: 8351.0 B 504.0 B > Standby memory: 0.0 B 55.7 MB > Total: 483.1 kB 55.8 MB > > Active pages: 204.0 kB > Kept free pages: 55.7 MB > Cold free pages: 0.0 B > Hot page cache depleted while in RCU: 0 > > > kinda feels like putting pipe in-between fucks with some logic but > that doesn't explain the memory growth, just the route churn, and it > all appears to be in the pipe protocol: > > bird> show protocols all > Name Proto Table State Since Info > pipe_generated Pipe --- up 2026-07-13 11:08:28 > master4 <=> generated_t Created: 2026-07-13 11:08:28 > Channel main > Table: master4 > Peer table: generated_t > Import state: READY > Export state: READY > Import filter: ACCEPT > Export filter: REJECT > Routes: 5 imported, 0 exported > Route change stats: received rejected filtered ignored > accepted Import updates: 409490 0 0 > 5 204745 Import withdraws: 0 0 --- > 0 0 Export updates: 409480 204740 > 0 0 0 Export withdraws: 0 0 > --- 0 0 > > device1 Device --- up 2026-07-13 11:08:28 > Created: 2026-07-13 11:08:28 > > generated Static generated_t up 2026-07-13 11:08:28 > Created: 2026-07-13 11:08:28 > Channel ipv4 > State: UP > Import state: UP > Export state: DOWN > Table: generated_t > Preference: 200 > Input filter: ACCEPT > Output filter: REJECT > Routes: 5 imported, 0 exported, 1 preferred > Route change stats: received rejected filtered ignored > RX limit limit accepted Import updates: 5 > 0 0 0 0 0 5 Import > withdraws: 0 0 --- 0 --- > --- 0 Export updates: 0 0 > 0 0 --- 0 0 Export withdraws: > 0 --- --- 0 --- --- > 0 > > > for comparison, bird2 : > > ☠ birdc > BIRD 2.19.1 ready. > bird> show protocols all > Name Proto Table State Since Info > device1 Device --- up 2026-07-13 11:14:05 > > generated Static generated_t up 2026-07-13 11:14:05 > Channel ipv4 > State: UP > Table: generated_t > Preference: 200 > Input filter: ACCEPT > Output filter: REJECT > Routes: 5 imported, 0 exported, 1 preferred > Route change stats: received rejected filtered ignored > accepted Import updates: 5 0 0 > 0 5 Import withdraws: 0 0 --- > 0 0 Export updates: 0 0 > 0 --- 0 Export withdraws: 0 --- > --- --- 0 > > pipe_generated Pipe --- up 2026-07-13 11:14:05 > master4 <=> generated_t Channel main > Table: master4 > Peer table: generated_t > Import state: up > Export state: up > Import filter: ACCEPT > Export filter: REJECT > Routes: 5 imported, 0 exported > Route change stats: received rejected filtered ignored > accepted Import updates: 10 0 0 > 0 10 Import withdraws: 0 0 --- > 0 0 Export updates: 10 10 > 0 0 0 Export withdraws: 0 0 > --- 0 0 > > > > > > > Maria > > > > On Fri, Jul 10, 2026 at 05:58:43PM +0200, Mariusz Gronczewski wrote: > > > > > On Fri, 10 Jul 2026 17:23:54 +0200 > > > Mariusz Gronczewski <[email protected]> wrote: > > > > > > > > > > Now 0.0.0.0/0 isnt imported from any peer (dropped on filters), > > > > and only generated in static and then distributed to OSPF: > > > > > > > > > > That was incorrect. I had kernel import filter set to all so it > > > imported 0.0.0.0/0 route > > > > > > and kernel export filter also allowed 0.0.0.0/0 route > > > > > > however fixing that (no 0.0.0.0/0 exported to kernel any more) > > > didn't fix the problem > > > > > > removing all but one generated route > > > > > > > > > protocol static generated { > > > ipv4 { > > > table generated_t; > > > > > > }; > > > check link; > > > igp table master4; > > > route 193.200.227.0/24 blackhole; > > > route 194.50.132.0/22 blackhole; > > > route 0.0.0.0/0 recursive 8.8.8.8 { > > > preference=500; > > > > > > }; > > > > > > > > > }; > > > > > > seems to fix it however I don't know why... the previous config > > > just showed 0.0.0.0/0 in bird with multiple hops based on > > > preference. > > > > > > > > > -- > > > Mariusz Gronczewski (XANi) <[email protected]> > > > GnuPG: 0xEA8ACE64 > > > https://devrandom.eu > > > > > > -- Mariusz Gronczewski (XANi) <[email protected]> GnuPG: 0xEA8ACE64 https://devrandom.eu
