bird6 segfault

Arjan Filius iafilius at xs4all.nl
Fri May 28 13:55:32 CEST 2010


Hello,

Starting to configure bird6 for iBGP and ran in a repeatable crash
running 1.2.2  from ppa on ubuntu 10.04 LTS x64.

as soon as i configure in a protocol bgp it's neighbor like:
  neighbor 2A00:1388:FFFF::3 as MYAS;

bird6 crashes
i unset the ulimit core to produce a core file, but no debugging info is 
included:

# gdb `which bird6` core
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/sbin/bird6...(no debugging symbols 
found)...done.
[New Thread 16308]

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/librt.so.1...(no debugging symbols 
found)...done.
Loaded symbols for /lib/librt.so.1
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/libpthread.so.0...(no debugging symbols 
found)...done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols 
found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Core was generated by `bird6'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f4c985bddd5 in ?? ()
(gdb) bt
#0  0x00007f4c985bddd5 in ?? ()
#1  0x00007f4c985be22f in ?? ()
#2  0x00007f4c9859ec33 in ?? ()
#3  0x00007f4c98596850 in ?? ()
#4  0x00007f4c985bc447 in ?? ()
#5  0x00007f4c985be458 in ?? ()
#6  0x00007f4c985c1cec in main ()
(gdb)


network on the interface is:
  2a00:1388:ffff::2/124


as soon i change the IP a little so it leaves the /124 it doesn't crash 
anymore.

i've a succesfull eBGP setup.



Now to try to debug the situation i tried to compile a 1.2.2 ipv6 version 
from source, but i run stuck at the moment:

ran:

bird-1.2.2# ./configure --sysconfdir=/ 
--enable-debug --enable-ipv6
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for library containing clock_gettime... -lrt
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking what CFLAGS should we use... -g -O2 -Wall -Wstrict-prototypes 
-Wno-parentheses -Wno-pointer-sign
checking how to run the C preprocessor... gcc -E
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for flex... flex
checking for bison... bison
checking for gm4... no
checking for m4... m4
checking Linux kernel version... VERSION: UTS_RELEASE
checking which OS configuration should we use... ./sysdep/cf/linux-v6.h
checking system-dependent directories... sysdep/linux/netlink sysdep/linux 
sysdep/unix  lib
checking protocols... ok
checking for linux/rtnetlink.h... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking alloca.h usability... yes
checking alloca.h presence... yes
checking for alloca.h... yes
checking whether 'struct sockaddr' has sa_len... no
checking whether byte ordering is bigendian... no
checking for char... yes
checking size of char... 1
checking for short int... yes
checking size of short int... 2
checking for int... yes
checking size of int... 4
checking for long int... yes
checking size of long int... 8
checking for 8-bit type... char
checking for 16-bit type... short int
checking for 32-bit type... int
checking usual alignment of structures... 16
checking characteristics of time_t... 64-bit signed
checking for struct ip_mreqn... yes
checking for dmalloc_debug in -ldmalloc... no
checking for malloc in -lefence... no
checking for add_history in -lhistory... yes
checking for tgetent in -lncurses... yes
checking for rl_callback_read_char in -lreadline... yes
checking for rl_crlf in -lreadline... yes
checking for rl_ding in -lreadline... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating obj/Makefile
config.status: creating obj/Rules
config.status: creating obj/sysdep/autoconf.h
config.status: obj/sysdep/autoconf.h is unchanged
config.status: executing merge commands
Merging system-dependent modules (sysdep/linux/netlink sysdep/linux 
sysdep/unix lib)

BIRD was configured with the following options:
 	Source directory:	.
 	Object directory:	obj
 	System configuration:	./sysdep/cf/linux-v6.h
 	Debugging:		yes
 	Routing protocols:	bgp ospf pipe rip static
 	Client:			yes
bird-1.2.2# make
make -C obj all
make[1]: Entering directory `/root/arfi/src/bird-1.2.2/obj'
make depend
make[2]: Entering directory `/root/arfi/src/bird-1.2.2/obj'
mkdir -p nest filter proto/bgp proto/ospf proto/pipe proto/rip 
proto/static client doc
touch .dir-stamp
set -e ; for a in lib conf ; do make -C $a depend ; done
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/lib'
gcc -I../ -I../..  -MM bitops.c checksum.c event.c io.c ip.c ipv6.c krt.c 
lists.c log.c main.c md5.c mempool.c netlink.c patmatch.c printf.c 
random.c resource.c slab.c slists.c xmalloc.c >depend
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/lib'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/conf'
m4 -P ../../conf/gen_keywords.m4 ../../conf/confbase.Y 
../../sysdep/unix/config.Y ../../sysdep/unix/krt.Y 
../../sysdep/linux/netlink/netlink.Y  ../../nest/config.Y 
../../filter/config.Y ../../proto/bgp/config.Y ../../proto/ospf/config.Y 
../../proto/pipe/config.Y ../../proto/rip/config.Y 
../../proto/static/config.Y >keywords.h
m4 -P ../../conf/gen_commands.m4 ../../client/cmds.m4 
../../conf/confbase.Y ../../sysdep/unix/config.Y ../../sysdep/unix/krt.Y 
../../sysdep/linux/netlink/netlink.Y  ../../nest/config.Y 
../../filter/config.Y ../../proto/bgp/config.Y ../../proto/ospf/config.Y 
../../proto/pipe/config.Y ../../proto/rip/config.Y 
../../proto/static/config.Y | sort >commands.h
m4 -P ../../conf/gen_parser.m4 ../../conf/confbase.Y 
../../sysdep/unix/config.Y ../../sysdep/unix/krt.Y 
../../sysdep/linux/netlink/netlink.Y  ../../nest/config.Y 
../../filter/config.Y ../../proto/bgp/config.Y ../../proto/ospf/config.Y 
../../proto/pipe/config.Y ../../proto/rip/config.Y 
../../proto/static/config.Y >cf-parse.y
bison -bcf-parse -dv -pcf_  cf-parse.y
flex  -s -B -8 -ocf-lex.c -Pcf_ cf-lex.l
gcc -I../ -I../..  -MM cf-parse.tab.c cf-lex.c conf.c >depend
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/conf'
set -e ; for a in nest filter proto/bgp proto/ospf proto/pipe proto/rip 
proto/static client ; do make -C $a -f 
/root/arfi/src/bird-1.2.2/$a/Makefile depend ; done
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/nest'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/nest'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/filter'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/filter'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/proto/bgp'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/proto/bgp'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/proto/ospf'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/proto/ospf'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/proto/pipe'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/proto/pipe'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/proto/rip'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/proto/rip'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/proto/static'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/proto/static'
make[3]: Entering directory `/root/arfi/src/bird-1.2.2/obj/client'
make[3]: `depend' is up to date.
make[3]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/client'
make[2]: Leaving directory `/root/arfi/src/bird-1.2.2/obj'
touch .dep-stamp
set -e ; for a in lib conf ; do make -C $a subdir ; done
make[2]: Entering directory `/root/arfi/src/bird-1.2.2/obj/lib'
gcc -I../ -I../..  -g -O2 -Wall -Wstrict-prototypes -Wno-parentheses 
-Wno-pointer-sign -o bitops.o -c bitops.c
gcc -I../ -I../..  -g -O2 -Wall -Wstrict-prototypes -Wno-parentheses 
-Wno-pointer-sign -o checksum.o -c checksum.c
gcc -I../ -I../..  -g -O2 -Wall -Wstrict-prototypes -Wno-parentheses 
-Wno-pointer-sign -o event.o -c event.c
event.c: In function ‘ev_run_list’:
../lib/lists.c:132: warning: dereferencing pointer ‘({anonymous})’ 
does break strict-aliasing rules
../lib/lists.c:115: note: initialized from here
gcc -I../ -I../..  -g -O2 -Wall -Wstrict-prototypes -Wno-parentheses 
-Wno-pointer-sign -o io.o -c io.c
io.c: In function ‘sysio_process_rx_cmsgs’:
io.c:704: error: dereferencing pointer to incomplete type
io.c:705: error: dereferencing pointer to incomplete type
io.c: In function ‘sk_read’:
io.c:1380: error: invalid application of ‘sizeof’ to incomplete type 
‘struct in6_pktinfo’
make[2]: *** [io.o] Error 1
make[2]: Leaving directory `/root/arfi/src/bird-1.2.2/obj/lib'
make[1]: *** [subdir] Error 2
make[1]: Leaving directory `/root/arfi/src/bird-1.2.2/obj'
make: *** [all] Error 2
bird-1.2.2#

Tried the ppa-source too, but same result.


Anyone an idea:
1)what may go wrong causing the bird6 crash on startup?
2) what to do to get bird compiled from source.

Thanks in advance.

-- 
Arjan Filius
mailto:iafilius at xs4all.nl


More information about the Bird-users mailing list