bird6 segfault

Arjan Filius iafilius at xs4all.nl
Fri May 28 14:26:51 CEST 2010


Hello,

an update.

added "listen bgp v6only;" in the global section of my bird6.conf seems to 
solve it.
a mistery still why it kept running with exchange connection then, that 
put me on the wrong foot.

i'd "always saw" a "bird6: sk_open: bind: Address already in use" which i 
ignored for later research as my IX connection was actually working.

so that seems to be sovled (for me), but question about compile stays 
open.


Regards,

Arjan Filius

On Fri, 28 May 2010, Arjan Filius wrote:

> 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