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

Reply via email to