Hi,

 

after upgrading from Bird 3.1.4 to 3.2.0 (EPEL RPM package) bird is crashing shortly after starting it with the following error

 

Assertion 'DG_IS_LOCKED(orig->domain)' failed at lib/resource.c:208

 

The issue was reported back in january on this list (https://bird.network.cz/pipermail/bird-users/2026-January/018551.html) but there was no real follow-up.

 

We confirm the behaviour – bird crashes shortly after processing the first BGP requests and generates he following core-dump

 

                                                                   Stack trace of thread 6573:

                                                                   #0  0x00007f191f08d02c __pthread_kill_implementation (libc.so.6 + 0x8d02c)

                                                                   #1  0x00007f191f03fb86 raise (libc.so.6 + 0x3fb86)

                                                                   #2  0x00007f191f029873 abort (libc.so.6 + 0x29873)

                                                                   #3  0x0000559400a21d5f bug (bird + 0xe9d5f)

                                                                   #4  0x0000559400978bd7 rmove (bird + 0x40bd7)

                                                                   #5  0x00005594009d3809 bgp_start.lto_priv.0 (bird + 0x9b809)

                                                                   #6  0x000055940098b48e proto_rethink_goal.lto_priv.0 (bird + 0x5348e)

                                                                   #7  0x000055940097611e defer_execute (bird + 0x3e11e)

                                                                   #8  0x0000559400972323 ev_run_list_limited (bird + 0x3a323)

                                                                   #9  0x0000559400950556 main (bird + 0x18556)

                                                                   #10 0x00007f191f02a610 __libc_start_call_main (libc.so.6 + 0x2a610)

                                                                   #11 0x00007f191f02a6c0 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x2a6c0)

                                                                   #12 0x0000559400950c75 _start (bird + 0x18c75)

 

                                                                   Stack trace of thread 6574:

                                                                   #0  0x00007f191f088540 __GI___lll_lock_wait (libc.so.6 + 0x88540)

                                                                   #1  0x00007f191f08e6d2 __pthread_mutex_lock@GLIBC_2.2.5 (libc.so.6 + 0x8e6d2)

                                                                   #2  0x0000559400a22a92 do_lock (bird + 0xeaa92)

                                                                   #3  0x0000559400a1c0e0 bird_thread_main (bird + 0xe40e0)

                                                                   #4  0x00007f191f08b2ea start_thread (libc.so.6 + 0x8b2ea)

                                                                   #5  0x00007f191f1103d0 __clone3 (libc.so.6 + 0x1103d0)

 

                                                                   Stack trace of thread 6575:

                                                                   #0  0x00007f191f1030cf __poll (libc.so.6 + 0x1030cf)

                                                                   #1  0x0000559400a1c436 bird_thread_main (bird + 0xe4436)

                                                                   #2  0x00007f191f08b2ea start_thread (libc.so.6 + 0x8b2ea)

                                                                   #3  0x00007f191f1103d0 __clone3 (libc.so.6 + 0x1103d0)

                                                                   ELF object binary architecture: AMD x86-64

 

 

We reverted to Bird 3.1.5 – no issues here.

 

The issue occurs with the following configuration (slightly anonymized)

 

Bird.conf

 

# Configure logging

log syslog all;

# Include constants

include "/etc/bird/constants.conf";

router id rs_ipv4;

 

protocol bfd BFD_DCFABRIC {

  multihop {

                interval 300 ms;

                multiplier 3;

  };

}

 

protocol direct {

        disabled;               # Disable by default

        ipv4;                   # Connect to default IPv4 table

        ipv6;                   # ... and to default IPv6 table

}

 

protocol kernel {

        ipv4 { };

}

 

protocol kernel {

        ipv6 { };

}

 

protocol static {

        disabled;

        ipv4;                   # Again, IPv4 channel with default options

}

 

include "/etc/bird/rs-peerings.conf";

 

 

 

constants.conf

 

define rs_ipv4 = x.y.y.z;

 

rs-peerings.conf

 

# FILTER

 

filter only_serviceips {

  if net ~ [ 192.168.20.0/24{32,32} ] then accept;

  if net ~ [ 10.127.64.0/19{32,32} ] then accept;

  reject;

}

 

# HOSTS

 

template bgp SERVICENODE {

  local as 4200010004;

  ipv4 {

    import filter only_serviceips;

    export none;

  };

  rs client;

  hold time 6;

  multihop 10;

  bfd on;

  source address rs_ipv4;

}

 

 

protocol bgp rack_XYZ from SERVICENODE {

  neighbor range 192.168.y.y/26 as 4200010003;

  dynamic name "rack_XYZ_";

}

 

template bgp DCFABRIC {

  ipv4 {

    import none;

    export all;

    add paths tx;

  };

  local as 4200010004;

  rs client;

  multihop 10;

  bfd on;

  source address rs_ipv4;

}

 

# DC-Fabric nodes

 

protocol bgp R_DCI_01 from DCFABRIC {

  neighbor x.x.x.x as 4200001201;

}