BIRD 3.1.5 crash: Assertion failure in do_lock / if_find_by_index
Hi BIRD Team, I wanna report a crash with BIRD 3.1.5 running on NixOS. The crash triggers a `bug()` assertion failure related to locking mechanisms during interface lookup (`if_find_by_index`). I have successfully reproduced this issue locally with a minimal configuration. Environment: - BIRD Version: 3.1.5 - OS: NixOS unstable (glibc 2.40) - Kernel: Linux 6.17.9 #1-NixOS SMP PREEMPT_DYNAMIC x86_64 GNU/Linux Reproduction Steps: 1. Configure a BGP protocol using an IPv6 Link-Local neighbor on a physical interface. 2. Start BIRD. Wait for the protocol to enter 'Active' or 'Connect' state so the port is listening. 3. Initiate a TCP connection to the BGP port: $ nc -6 -v <Link-Local-IP>%<interface> <port> 4. BIRD crashes immediately upon receiving the connection. Crash Summary (from GDB): The main thread (Thread 1) hits a bug() assertion: #3 0x000056536f6ef97a in bug (msg=<optimized out>) at sysdep/unix/log.c:412 #4 0x000056536f6fa9a1 in do_lock (dg=0x5653774ace60, lsp=0x7fba0208a2a8) at sysdep/unix/domain.c:116 #5 0x000056536f64c8ac in if_find_by_index (idx=23) at nest/iface.c:721 #6 0x000056536f6e4ac8 in sockaddr_read6 ... at sysdep/unix/io.c:583 #8 0x000056536f6ecfd7 in sk_passive_connected ... at sysdep/unix/io.c:1451 Attachments: 1. backtrace.txt: Full GDB backtrace. 2. config_snippet.txt: The minimal config used to reproduce the crash. Best regards, Moraxyc
Hi, we looked into it and it really is a regression bug in the v3.1.5 connected to locking domains in BGP. The newly released v3.2 should not have this issue so I recommend using that version. Though v3.1.6 with the fix will be released also. Thanks a lot for reporting this bug to us! David David Petera (he/him) | BIRD Tech Support | CZ.NIC, z.s.p.o. On 12/11/25 18:50, Moraxyc via Bird-users wrote:
Hi BIRD Team,
I wanna report a crash with BIRD 3.1.5 running on NixOS.
The crash triggers a `bug()` assertion failure related to locking mechanisms during interface lookup (`if_find_by_index`).
I have successfully reproduced this issue locally with a minimal configuration.
Environment: - BIRD Version: 3.1.5 - OS: NixOS unstable (glibc 2.40) - Kernel: Linux 6.17.9 #1-NixOS SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
Reproduction Steps: 1. Configure a BGP protocol using an IPv6 Link-Local neighbor on a physical interface. 2. Start BIRD. Wait for the protocol to enter 'Active' or 'Connect' state so the port is listening. 3. Initiate a TCP connection to the BGP port: $ nc -6 -v <Link-Local-IP>%<interface> <port> 4. BIRD crashes immediately upon receiving the connection.
Crash Summary (from GDB): The main thread (Thread 1) hits a bug() assertion: #3 0x000056536f6ef97a in bug (msg=<optimized out>) at sysdep/unix/log.c:412 #4 0x000056536f6fa9a1 in do_lock (dg=0x5653774ace60, lsp=0x7fba0208a2a8) at sysdep/unix/domain.c:116 #5 0x000056536f64c8ac in if_find_by_index (idx=23) at nest/iface.c:721 #6 0x000056536f6e4ac8 in sockaddr_read6 ... at sysdep/unix/io.c:583 #8 0x000056536f6ecfd7 in sk_passive_connected ... at sysdep/unix/io.c:1451
Attachments: 1. backtrace.txt: Full GDB backtrace. 2. config_snippet.txt: The minimal config used to reproduce the crash.
Best regards, Moraxyc
Hi David, Thanks for the confirmation and explanation. I will upgrade to v3.2 as suggested. Thanks for your work! Best regards, Moraxyc On Mon, Jan 05, 2026 at 11:00:21PM +0100, David Petera via Bird-users wrote:
Hi,
we looked into it and it really is a regression bug in the v3.1.5 connected to locking domains in BGP.
The newly released v3.2 should not have this issue so I recommend using that version. Though v3.1.6 with the fix will be released also.
Thanks a lot for reporting this bug to us! David
David Petera (he/him) | BIRD Tech Support | CZ.NIC, z.s.p.o.
On 12/11/25 18:50, Moraxyc via Bird-users wrote:
Hi BIRD Team,
I wanna report a crash with BIRD 3.1.5 running on NixOS.
The crash triggers a `bug()` assertion failure related to locking mechanisms during interface lookup (`if_find_by_index`).
I have successfully reproduced this issue locally with a minimal configuration.
Environment: - BIRD Version: 3.1.5 - OS: NixOS unstable (glibc 2.40) - Kernel: Linux 6.17.9 #1-NixOS SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
Reproduction Steps: 1. Configure a BGP protocol using an IPv6 Link-Local neighbor on a physical interface. 2. Start BIRD. Wait for the protocol to enter 'Active' or 'Connect' state so the port is listening. 3. Initiate a TCP connection to the BGP port: $ nc -6 -v <Link-Local-IP>%<interface> <port> 4. BIRD crashes immediately upon receiving the connection.
Crash Summary (from GDB): The main thread (Thread 1) hits a bug() assertion: #3 0x000056536f6ef97a in bug (msg=<optimized out>) at sysdep/unix/log.c:412 #4 0x000056536f6fa9a1 in do_lock (dg=0x5653774ace60, lsp=0x7fba0208a2a8) at sysdep/unix/domain.c:116 #5 0x000056536f64c8ac in if_find_by_index (idx=23) at nest/iface.c:721 #6 0x000056536f6e4ac8 in sockaddr_read6 ... at sysdep/unix/io.c:583 #8 0x000056536f6ecfd7 in sk_passive_connected ... at sysdep/unix/io.c:1451
Attachments: 1. backtrace.txt: Full GDB backtrace. 2. config_snippet.txt: The minimal config used to reproduce the crash.
Best regards, Moraxyc
participants (2)
-
David Petera -
Moraxyc