Segfault on interface addition when not using the device protocol

Apollon Oikonomopoulos apollon at skroutz.gr
Tue Nov 13 11:10:23 CET 2012


Greetings,

I came across this issue while trying to debug (unsuccessfully so far) a
probably unrelated segfault on one of our routers. When using the kernel protocol
in a configuration without a device protocol, then adding a new interface with
an address causes bird to segfault. The relevant backtrace for bird 1.3.8 (or
1.3.7 it's the same) is the following:

#0  kif_choose_primary (i=0x5555557c8080) at krt.c:147
#1  0x0000555555564059 in ifa_recalc_primary (i=0x5555557c8080) at ../../nest/iface.c:469
#2  0x0000555555564d89 in ifa_update (a=0x7fffffffdfd0) at ../../nest/iface.c:546
#3  0x0000555555596534 in nl_parse_addr (h=<optimized out>) at netlink.c:545
#4  0x0000555555596a38 in nl_async_msg (h=0x5555557c4f70) at netlink.c:980
#5  nl_async_hook (sk=<optimized out>, size=<optimized out>) at netlink.c:1027
#6  0x0000555555590bed in sk_read (s=0x5555557c4e80) at io.c:1442
#7  0x0000555555591a09 in io_loop () at io.c:1647
#8  0x000055555555bf89 in main (argc=<optimized out>, argv=<optimized out>) at main.c:675

Steps to reproduce:
1. Use the following config:
    router id 192.0.2.1;
    
    protocol kernel {
    	import none;
    	export none;
    	persist;
    	scan time 20;
    }

2. Start bird
    bird -d -c bird.conf

3. Add a dummy interface
    ip link add crash type dummy

4. Add an IP address to the interface
    ip addr add crash 192.0.2.2/24
    <bird segfaults>

The issue is not present when the device protocol is defined in the
configuration. I realize that the device protocol is virtually mandatory, but
I still regard a segfault as a bug :).

Regards,
Apollon



More information about the Bird-users mailing list