Closed alarig closed 4 years ago
gdb says that the error is at config.c:346
alarig ~ # gdb /usr/sbin/bgpd
GNU gdb (Gentoo 9.1 vanilla) 9.1
Copyright (C) 2020 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-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/sbin/bgpd...
Reading symbols from /usr/lib/debug//usr/sbin/bgpd.debug...
(gdb) run
Starting program: /usr/sbin/bgpd
Program received signal SIGSEGV, Segmentation fault.
0x000055555556c60c in get_bgpid () at config.c:346
346 config.c: No such file or directory.
(gdb) quit
A debugging session is active.
Inferior 1 [process 2962] will be killed.
Quit anyway? (y or n) y
Hi Alarig,
Thanks for the report and especially the gdb output. Can you give this diff a try
Index: config.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/config.c,v
retrieving revision 1.95
diff -u -p -r1.95 config.c
--- config.c 14 Feb 2020 13:54:31 -0000 1.95
+++ config.c 20 Mar 2020 16:39:15 -0000
@@ -339,7 +339,8 @@ get_bgpid(void)
fatal("getifaddrs");
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
- if (ifa->ifa_addr->sa_family != AF_INET)
+ if (ifa->ifa_addr == NULL ||
+ ifa->ifa_addr->sa_family != AF_INET)
continue;
cur = ((struct sockaddr_in *)ifa->ifa_addr)->sin_addr.s_addr;
if ((cur & localnet) == localnet) /* skip 127/8 */
It seems that your system has a getifaddrs entry with a NULL ifa_addr. It will take a bit to push this into this repo so it is best to just hand edit src/bgpd/config.c and rebuild.
It seems to work, thanks a lot!
alarig ~ # bgpd -d
startup
PF_KEY not available, disabling ipsec
session engine ready
route decision engine ready
listening on (unknown)
listening on (unknown)
SE reconfigured
neighbor 192.0.2.2: state change None -> Idle, reason: None
neighbor 192.0.2.3: state change None -> Idle, reason: None
neighbor 2001:db8:abcd::2: state change None -> Idle, reason: None
neighbor 2001:db8:abcd::3: state change None -> Idle, reason: None
neighbor 203.0.113.1 (IPv4 Transit Provider A): state change None -> Idle, reason: None
neighbor 198.51.100.0 (IPv4 Transit provider B): state change None -> Idle, reason: None
neighbor 2001:db8:666::2 (IPv6 Transit provider B): state change None -> Idle, reason: None
neighbor 192.0.2.2: state change Idle -> Connect, reason: Start
neighbor 192.0.2.2: session_connect bind: Cannot assign requested address
neighbor 192.0.2.2: state change Connect -> Active, reason: Connection open failed
neighbor 192.0.2.3: state change Idle -> Connect, reason: Start
neighbor 192.0.2.3: session_connect bind: Cannot assign requested address
neighbor 192.0.2.3: state change Connect -> Active, reason: Connection open failed
neighbor 2001:db8:abcd::2: state change Idle -> Connect, reason: Start
neighbor 2001:db8:abcd::2: session_connect bind: Cannot assign requested address
neighbor 2001:db8:abcd::2: state change Connect -> Active, reason: Connection open failed
neighbor 2001:db8:abcd::3: state change Idle -> Connect, reason: Start
neighbor 2001:db8:abcd::3: session_connect bind: Cannot assign requested address
neighbor 2001:db8:abcd::3: state change Connect -> Active, reason: Connection open failed
neighbor 203.0.113.1 (IPv4 Transit Provider A): state change Idle -> Connect, reason: Start
neighbor 198.51.100.0 (IPv4 Transit provider B): state change Idle -> Connect, reason: Start
neighbor 2001:db8:666::2 (IPv6 Transit provider B): state change Idle -> Connect, reason: Start
RDE reconfigured
running softreconfig in
softreconfig in done
starting softreconfig out for rib Loc-RIB
softreconfig out done for Loc-RIB
RDE soft reconfiguration done
neighbor 203.0.113.1 (IPv4 Transit Provider A): socket error: No route to host
neighbor 203.0.113.1 (IPv4 Transit Provider A): state change Connect -> Active, reason: Connection open failed
neighbor 198.51.100.0 (IPv4 Transit provider B): socket error: No route to host
neighbor 198.51.100.0 (IPv4 Transit provider B): state change Connect -> Active, reason: Connection open failed
neighbor 2001:db8:666::2 (IPv6 Transit provider B): socket error: No route to host
neighbor 2001:db8:666::2 (IPv6 Transit provider B): state change Connect -> Active, reason: Connection open failed
Hi,
I’m trying to make an ebuild (for Gentoo) for OpenBGPD. Here is my current code: https://git.grifon.fr/alarig/SwordArMor-gentoo-overlay/src/branch/openbgpd/net-misc/openbgpd/openbgpd-6.6.ebuild
I can compile it, but it segfaults when I try to run it:
What could be the cause?
Regards, Alarig