FRRouting / frr

The FRRouting Protocol Suite
https://frrouting.org/
Other
3.33k stars 1.25k forks source link

bgpd crashes on duplicate community configuration #6473

Closed kruisdraad closed 4 years ago

kruisdraad commented 4 years ago

System running version: 7.3

In a configuration where you have and existing / running config of:

bgp community-list standard 666:7004 permit 666:7004
route-map export6-as666 deny 40
 match community 666:7004
!

Then trying to add:

route-map export6-as666 deny 40
 match community 666:7003
!

results in a crash of the daemon. As long as you dont have this in your persistant config, it will restart back with the reverted config. If you load it as the persistant frr.conf your daemon keeps crashing until config cleared.

This happend to me earlier on another config element as well working with communities. It would be great is FRR catches these and give an error if needs be.

kruisdraad commented 4 years ago

To clarify, if you do:

no route-map export6-as666 deny 40 route-map export6-as666 deny 40 match community 666:7003 !

If does NOT crash, so it only happens when its trying to add the 2nd community match.

kruisdraad commented 4 years ago

The vtysh output while trying to give this command:

rtr01(config-route-map)# route-map export6-as666 deny 40 rtr01(config-route-map)# match community 666:7003 vtysh: error reading from bgpd: Success (0)Warning: closing connection to bgpd because of an I/O error! rtr01(config-route-map)# ! rtr01(config-route-map)# route-map export6-as666 deny 50 Warning: connecting to bgpd...failed! Warning: connecting to bgpd...failed! Warning: connecting to bgpd...failed! rtr01(config-route-map)# match community 666:1000 Warning: connecting to bgpd...failed! bgpd is not running rtr01(config-route-map)#

Nothing in the logs except the watchdog restarting the daemon.

ton31337 commented 4 years ago

@kruisdraad I'm not able to reproduce this on stable/7.3 branch. Tested with master as well. Could you look at my commands and tell if I'm using not as expected.

exit1-debian-9# sh ver
FRRouting 7.3-MyOwnFRRVersion-g7417f78 (exit1-debian-9).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
This is a git build of frr-5.1-dev-2015-ge87417f78
Associated branch(es):
    local:stable/7.3
    github/ton31337/frr/stable/7.3

configured with:
    '--enable-systemd' '--enable-exampledir=/usr/share/doc/frr/examples/' '--localstatedir=/var/opt/frr' '--sbindir=/usr/lib/frr' '--sysconfdir=/etc/frr' '--enable-vtysh' '--enable-isisd' '--enable-pimd' '--enable-watchfrr' '--enable-ospfclient=yes' '--enable-ospfapi=yes' '--enable-multipath=64' '--enable-user=frr' '--enable-group=frr' '--enable-vty-group=frrvty' '--enable-configfile-mask=0640' '--enable-logfile-mask=0640' '--enable-rtadv' '--enable-fpm' '--enable-ldpd' '--with-pkg-git-version' '--with-pkg-extra-version=-MyOwnFRRVersion' '--enable-rpki=yes' '--enable-sharpd'
exit1-debian-9# conf
exit1-debian-9(config)# route-map export6-as666 deny 40
exit1-debian-9(config-route-map)# match community 666:7004
exit1-debian-9(config-route-map)# exit
exit1-debian-9(config)# route-map export6-as666 deny 40
exit1-debian-9(config-route-map)# match community 666:7003
exit1-debian-9(config-route-map)# 
kruisdraad commented 4 years ago

@ton31337

Exact version (forgot this last time)

rtr01# show version
FRRouting 7.3 (rtr01).

root@rtr01:/# dpkg -l | grep frr
ii  frr                                    7.3-1~ubuntu18.04.1                             amd64        FRRouting suite of internet protocols (BGP, OSPF, IS-IS, ...)
ii  frr-pythontools                        7.3-1~ubuntu18.04.1                             all          FRRouting suite - Python tools
ii  frr-rpki-rtrlib                        7.3-1~ubuntu18.04.1                             amd64        FRRouting suite - BGP RPKI support (rtrlib)
ii  frr-snmp                               7.3-1~ubuntu18.04.1                             amd64        FRRouting suite - SNMP support

Also no, this is not the exact condition. The condition has to be that its applied so the first part you need to exit the configure mode and save (wr mem) it. Then i exit the console and 'later' ill attempt to add the send part. And i think the route-map must the linked to an active peer, so when you type the 2nd command it directly affects the running peer. If you dont have the policy linked it might not crash, but i can test that for you.

I will spin up a new VM and reproduce this again to see if its possible to do this without a peer connection/full table link to that route-map.

kruisdraad commented 4 years ago

@ton31337

So i tested this on a new system, same config. Obvisouly the system cannot get its peers up. So i first apply the config, wr-mem and ext the console. Then i directly open the console again and type the community changes. Interesting is that when i do this on a IMPORT it does not crash (or at least not reproduceable yet like on export), but on the EXPORT it does. When i do this with no peers connected its less 'impacting' but it did crash:

frr        4014  0.0  0.1 458440 10068 ?        S<sl 18:42   0:00 /usr/lib/frr/zebra -d -F traditional -A 127.0.0.1 -s 90000000 -M snmp
frr        4028  0.0  0.0  64196  3644 ?        S<s  18:42   0:00 /usr/lib/frr/staticd -d -F traditional -A 127.0.0.1
frr        4084  0.0  0.1 271508  8868 ?        S<sl 18:46   0:00 /usr/lib/frr/bgpd -d -F traditional -A 127.0.0.1 -M rpki -M snmp

Still the same error:

bart(config)# route-map import4-as6939 deny 51
bart(config-route-map)#  match community 41047:1002
bart(config-route-map)# !
bart(config-route-map)# route-map export4-as6939 deny 40
bart(config-route-map)#  match community 41047:6002
vtysh: error reading from bgpd: Success (0)Warning: closing connection to bgpd because of an I/O error!
bart(config-route-map)# !

Obviously i earlier changed the ASN/community, above if the real used items which are linked to a neighbour. When i use the commands listed in the first post, which are NOT linked to any neighbour or policy, nothing happens. So you must configure a linked neighbour for this to work. The per peer policy thats in the running config has rpki, length filters, prefix filters, and other stuff you'd expect from a router with proper filters.

If i remove e.g. the filters parts (prefix-filters) then the crash does not happen. Also its not doing it everytime if you dont have peers connected (maybe if its idle its not working, but on active it does?) for example, i needed to do it twice:

bart(config)# route-map import4-as6939 deny 51
bart(config-route-map)#  match community 41047:1001
bart(config-route-map)# !
bart(config-route-map)# route-map export4-as6939 deny 40
bart(config-route-map)#  match community 41047:6001
bart(config-route-map)# !
bart(config-route-map)#
bart(config-route-map)# route-map import4-as6939 deny 51
bart(config-route-map)#  match community 41047:1002
bart(config-route-map)# !
bart(config-route-map)# route-map export4-as6939 deny 40
bart(config-route-map)#  match community 41047:6002
vtysh: error reading from bgpd: Success (0)Warning: closing connection to bgpd because of an I/O error!
bart(config-route-map)# !

I had a strace running this time, which started just before i give the commands and can be found on https://8n1.org/17298/167b (didnt want to blob this thead).

So there is more to this then just a config item, some added peer condition as well perhaps? If you prepend it like:

no route-map import4-as6939 deny 51 route-map import4-as6939 deny 51 match community 41047:1002 !

I could not reproduce this, however it does affect the policy shortly. This is what i am doing with my provisioning scripts now to mitigate the crashes for now. Either way its reproduceable on another system cleanly installed with Ubuntu 18.04 and nothing fancy, just:

curl -s https://deb.frrouting.org/frr/keys.asc | sudo apt-key add -
FRRVER="frr-stable"
echo deb https://deb.frrouting.org/frr $(lsb_release -s -c) $FRRVER | sudo tee -a /etc/apt/sources.list.d/frr.list
apt update && sudo apt install frr frr-pythontools frr-rpki-rtrlib frr-snmp

in /etc/frr/daemons:

bgpd=yes
zebra_options="  -A 127.0.0.1 -s 90000000 -M snmp"
bgpd_options="   -A 127.0.0.1 -M rpki -M snmp"
MAX_FDS=8096

After that i just apply the config and then try to change on of the route-maps with a community line. Changing anything other just works.

I'd be happy to do a shared screen/session on the test VM so you can see the setup, configuration and crash yourself if required.

ton31337 commented 4 years ago

Thanks clarifying this, I'll test.

ton31337 commented 4 years ago

This is my testings: issue-6473

I see in strace's output a backtrace. Could you run the same strace with -s 4096 flag to catch the full backtrace log? Or at least copy here from the systemctl.

kruisdraad commented 4 years ago

@ton31337 strace with flag:

futex(0x560e8d57ed68, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x560e8d57ed68, FUTEX_WAKE_PRIVATE, 1) = 0
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=902008}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 119956) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1\1\1\1\1\1\1\1\1\1\1", 64)   = 11
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 119956) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=902554}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=902738}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=902855}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=903155}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 116928) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 116927) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=903734}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=903934}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=904086}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=904519}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 111891) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 111890) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=905055}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=905305}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=905455}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=906056}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 106819) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 106818) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=906486}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=906649}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=906736}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=907182}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 101799) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 101798) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=907795}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=908066}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=908269}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=908661}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 96818) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 96818) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=909083}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=909310}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=909388}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=909672}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 91877) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 91876) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=910165}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=910318}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=910476}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=910753}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 86893) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=6, events=POLLIN}], 9, 86892) = 1 ([{fd=24, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=911275}, ...}) = 0
write(7, "\1", 1)                       = 1
accept(24, {sa_family=AF_UNIX}, [110->2]) = 30
fcntl(30, F_GETFL)                      = 0x2 (flags O_RDWR)
fcntl(30, F_SETFL, O_RDWR|O_NONBLOCK)   = 0
fcntl(30, F_GETFD)                      = 0
fcntl(30, F_SETFD, FD_CLOEXEC)          = 0
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=911747}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 83409) = 2 ([{fd=30, revents=POLLIN}, {fd=6, revents=POLLIN}])
read(6, "\1\1", 64)                     = 2
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=912175}, ...}) = 0
read(30, "enable\0", 512)               = 7
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=912341}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=912508}, ...}) = 0
writev(30, [{iov_base="\0\0\0\0", iov_len=4}], 1) = 4
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=912690}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 83407) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 83406) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=913094}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=913305}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=913420}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=913752}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 81938) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 81937) = 1 ([{fd=30, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=914348}, ...}) = 0
read(30, "configure \0", 512)           = 11
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=914509}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=914653}, ...}) = 0
writev(30, [{iov_base="\0\0\0\0", iov_len=4}], 1) = 4
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=914856}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 81613) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 81613) = 1 ([{fd=26, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=915380}, ...}) = 0
read(26, "echo PING\0", 512)            = 10
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=915561}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=915655}, ...}) = 0
writev(26, [{iov_base="PING\n\0\0\0\0", iov_len=9}], 1) = 9
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=916182}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 76997) = 1 ([{fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 76996) = 1 ([{fd=30, revents=POLLIN}])
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=916723}, ...}) = 0
read(30, "route-map export4-as6939 deny 40\0", 512) = 33
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=916982}, ...}) = 0
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=917320}, ...}) = 0
writev(30, [{iov_base="\0\0\0\0", iov_len=4}], 1) = 4
write(7, "\1", 1)                       = 1
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=917828}, ...}) = 0
poll([{fd=18, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=20, events=POLLIN}, {fd=25, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}, {fd=26, events=POLLIN}, {fd=30, events=POLLIN}, {fd=6, events=POLLIN}], 10, 75188) = 2 ([{fd=30, revents=POLLIN}, {fd=6, revents=POLLIN}])
read(6, "\1", 64)                       = 1
read(6, 0x7fff7272f040, 64)             = -1 EAGAIN (Resource temporarily unavailable)
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=918397}, ...}) = 0
read(30, " match community 41047:6002\0", 512) = 28
getrusage(RUSAGE_THREAD, {ru_utime={tv_sec=0, tv_usec=72995}, ru_stime={tv_sec=2, tv_usec=918597}, ...}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x8} ---
rt_sigaction(SIGALRM, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f5c08719890}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], NULL, 8) = 0
alarm(1)                                = 0
write(27, "BGP: Received signal 11 at 1590763748 (si_addr 0x8, PC 0x7f5c0913edcc); aborting...\n", 84) = 84
socket(AF_UNIX, SOCK_DGRAM, 0)          = 31
connect(31, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0
getpid()                                = 4383
write(31, "<26>bgpd[4383]: Received signal 11 at 1590763748 (si_addr 0x8, PC 0x7f5c0913edcc); aborting...\n\377\177", 97) = 97
write(27, "Program counter: ", 17)      = 17
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="route_map_upd8_dependency", iov_len=25}, {iov_base="+0x", iov_len=3}, {iov_base="bc", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c0913edcc", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 90
write(27, "Backtrace for 19 stack frames:\n", 31) = 31
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="zlog_backtrace_sigsafe", iov_len=22}, {iov_base="+0x", iov_len=3}, {iov_base="60", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09122b60", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 87
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="zlog_signal", iov_len=11}, {iov_base="+0x", iov_len=3}, {iov_base="10c", iov_len=3}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09122fbc", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 77
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="6c774", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09143774", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 68
writev(27, [{iov_base="/lib/x86_64-linux-gnu/libpthread.so.0", iov_len=37}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="12890", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c08719890", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 64
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="route_map_upd8_dependency", iov_len=25}, {iov_base="+0x", iov_len=3}, {iov_base="bc", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c0913edcc", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 90
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="route_map_add_match", iov_len=19}, {iov_base="+0x", iov_len=3}, {iov_base="1e0", iov_len=3}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c0913f6b0", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 85
writev(27, [{iov_base="/usr/lib/frr/bgpd", iov_len=17}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="90b70", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="560e8b65cb70", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 44
writev(27, [{iov_base="/usr/lib/frr/bgpd", iov_len=17}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="91c87", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="560e8b65dc87", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 44
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="2adc5", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09101dc5", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 68
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="cmd_execute_command", iov_len=19}, {iov_base="+0x", iov_len=3}, {iov_base="ef", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c091043af", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 84
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="cmd_execute", iov_len=11}, {iov_base="+0x", iov_len=3}, {iov_base="b7", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09104527", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 76
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="7f365", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09156365", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 68
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="7f540", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09156540", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 68
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="+0x", iov_len=3}, {iov_base="81e90", iov_len=5}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09158e90", iov_len=12}, {iov_base="]\n", iov_len=2}], 8) = 68
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="thread_call", iov_len=11}, {iov_base="+0x", iov_len=3}, {iov_base="56", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09150f86", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 76
writev(27, [{iov_base="/usr/lib/x86_64-linux-gnu/frr/libfrr.so.0", iov_len=41}, {iov_base="(", iov_len=1}, {iov_base="frr_run", iov_len=7}, {iov_base="+0x", iov_len=3}, {iov_base="d8", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c09120dd8", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 72
writev(27, [{iov_base="/usr/lib/frr/bgpd", iov_len=17}, {iov_base="(", iov_len=1}, {iov_base="main", iov_len=4}, {iov_base="+0x", iov_len=3}, {iov_base="324", iov_len=3}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="560e8b604a74", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 46
writev(27, [{iov_base="/lib/x86_64-linux-gnu/libc.so.6", iov_len=31}, {iov_base="(", iov_len=1}, {iov_base="__libc_start_main", iov_len=17}, {iov_base="+0x", iov_len=3}, {iov_base="e7", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="7f5c08337b97", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 72
writev(27, [{iov_base="/usr/lib/frr/bgpd", iov_len=17}, {iov_base="(", iov_len=1}, {iov_base="_start", iov_len=6}, {iov_base="+0x", iov_len=3}, {iov_base="2a", iov_len=2}, {iov_base=")", iov_len=1}, {iov_base="[0x", iov_len=3}, {iov_base="560e8b606b8a", iov_len=12}, {iov_base="]\n", iov_len=2}], 9) = 47
getpid()                                = 4383
write(31, "<26>bgpd[4383]: Backtrace for 19 stack frames:\n", 47) = 47
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(zlog_backtrace_sigsafe+0x60) [0x7f5c09122b60]", 103) = 103
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(zlog_signal+0x10c) [0x7f5c09122fbc]c09122b60]", 103) = 103
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(+0x6c774) [0x7f5c09143774]09122fbc]c09122b60]", 103) = 103
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /lib/x86_64-linux-gnu/libpthread.so.0(+0x12890) [0x7f5c08719890]774]09122fbc]c09122b60]", 103) = 103
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(route_map_upd8_dependency+0xbc) [0x7f5c0913edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(route_map_add_match+0x1e0) [0x7f5c0913f6b0]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/frr/bgpd(+0x90b70) [0x560e8b65cb70]ute_map_add_match+0x1e0) [0x7f5c0913f6b0]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/frr/bgpd(+0x91c87) [0x560e8b65dc87]ute_map_add_match+0x1e0) [0x7f5c0913f6b0]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(+0x2adc5) [0x7f5c09101dc5] [0x7f5c0913f6b0]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(cmd_execute_command+0xef) [0x7f5c091043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(cmd_execute+0xb7) [0x7f5c09104527]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(+0x7f365) [0x7f5c09156365]9104527]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(+0x7f540) [0x7f5c09156540]9104527]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(+0x81e90) [0x7f5c09158e90]9104527]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(thread_call+0x56) [0x7f5c09150f86]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/x86_64-linux-gnu/frr/libfrr.so.0(frr_run+0xd8) [0x7f5c09120dd8]f86]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/frr/bgpd(main+0x324) [0x560e8b604a74]run+0xd8) [0x7f5c09120dd8]f86]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f5c08337b97]f86]91043af]]edcc]", 106) = 106
getpid()                                = 4383
write(31, "<26>bgpd[4383]: /usr/lib/frr/bgpd(_start+0x2a) [0x560e8b606b8a]in+0xe7) [0x7f5c08337b97]f86]91043af]]edcc]", 106) = 106
write(27, "in thread vtysh_read scheduled from lib/vty.c:2645\n", 51) = 51
getpid()                                = 4383
write(31, "<26>bgpd[4383]: in thread vtysh_read scheduled from lib/vty.c:2645\n PC 0x7f5c0913edcc); aborting...\n\377\177", 102) = 102
write(2, "core_handler: showing active allocations in memory group libfrr\n", 64) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Buffer                        :      6 *         24\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Host config                   :      4 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Command Tokens                :  10527 *         72\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Command Token Text            :   7744 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Command Token Help            :   7744 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Command Argument              :      3 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Command Argument Name         :   1670 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  RCU thread                    :      2 *        128\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  FRR POSIX Thread              :      4 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  POSIX sync primitives         :      4 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Graph                         :     39 *          8\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Graph Node                    :  12527 *         32\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Hash                          :    605 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Hash Bucket                   :   2422 *         32\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Hash Index                    :    303 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Hook entry                    :      9 *         48\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Interface                     :      2 *        264\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Connected                     :      2 *         48\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Link List                     :     63 *         40\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Link Node                     :    380 *         24\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Logging                       :      2 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Temporary memory              :     43 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Module loading name           :      2 *          5\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Northbound Configuration      :      2 *         16\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Prefix List                   :     24 *         80\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Prefix List Str               :     24 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Prefix List Entry             :   2367 *        112\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Prefix List Trie Table        :    347 *       4096\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Prefix                        :      2 *         48\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Privilege information         :      3 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Ring buffer                   :     54 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map                     :     26 *        104\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map name                :    224 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map index               :    170 *        136\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map rule                :    246 *         40\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map rule str            :    246 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map compiled            :    305 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map dependency          :     28 *         24\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route map dependency data     :    165 *         16\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Skip List                     :      2 *         56\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Skip Node                     :      4 *        160\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Socket union                  :     26 *         28\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Stream                        :     59 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Stream FIFO                   :     54 *         64\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Route table                   :    106 *         56\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Thread                        :     38 *        168\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Thread master                 :     11 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Thread Poll Info              :      6 *      64768\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Thread stats                  :     16 *         72\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Typed-hash bucket             :      8 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Typed-heap array              :      1 *        576\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Vector                        :  25138 *         16\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Vector index                  :  25138 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  VRF                           :      1 *        200\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  VRF bit-map                   :      3 *          8\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  VTY                           :      4 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Work queue                    :      3 *        152\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Work queue name string        :      3 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Zclient                       :      2 *       3312\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Redistribution instance IDs   :      6 *          2\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: showing active allocations in memory group bgpd\n", 62) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Mac Hash Entry                :      2 *         16\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Mac Hash Entry Interface String:      2 * (variably sized)\n", 84) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP instance                  :      2 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP listen socket details     :      2 *         48\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP peer                      :     27 *      20928\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP peer hostname             :     28 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Peer group                    :      6 *         64\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP Peer group hostname       :      6 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  Peer description              :     20 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP peer af                   :     20 *         80\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP attribute                 :      1 *        240\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP aspath                    :      1 *         40\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP aspath str                :      9 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP table                     :     93 *         40\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP node                      :     47 *        184\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP route                     :      3 *        112\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP connected                 :      1 *          4\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP static                    :      3 *        136\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP synchronise               :    567 *         72\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP AS list                   :      8 *         48\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP AS filter                 :      9 *         40\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP AS filter str             :      9 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  community                     :     48 *         40\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  community val                 :     48 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  community str                 :      1 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  community-list                :     29 *         56\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  community-list name           :     29 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  community-list entry          :     30 *         48\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  community-list handler        :      1 *        120\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP nexthop                   :     20 *         72\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP regexp                    :      9 *         64\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP own address               :      1 *         56\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP Filter Information        :     52 * (variably sized)\n", 83) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP Martian Address Intf String:      1 *          6\n", 78) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP PBR Context               :      1 *         16\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  BGP EVPN instance information :      1 *         56\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: showing active allocations in memory group rfapi\n", 63) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  NVE Configuration             :      1 *       2896\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  RFAPI Generic                 :      1 *        296\n", 77) = -1 EBADF (Bad file descriptor)
write(2, "core_handler: memstats:  RFAPI Import Table            :      1 *        208\n", 77) = -1 EBADF (Bad file descriptor)
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], ~[ABRT KILL ALRM STOP RTMIN RT_1], 8) = 0
getpid()                                = 4383
gettid()                                = 4383
tgkill(4383, 4383, SIGABRT)             = 0
rt_sigprocmask(SIG_SETMASK, ~[ABRT KILL ALRM STOP RTMIN RT_1], NULL, 8) = 0
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=4383, si_uid=111} ---
+++ killed by SIGABRT (core dumped) +++
kruisdraad commented 4 years ago

logs from syslog:

May 28 18:40:14 bart watchfrr[3407]: watchfrr 7.3 starting: vty@0
May 28 18:40:14 bart watchfrr[3407]: [EC 268435457] zebra state -> down : initial connection attempt failed
May 28 18:40:14 bart watchfrr[3407]: [EC 268435457] staticd state -> down : initial connection attempt failed
May 28 18:40:14 bart watchfrr[3407]: [EC 100663303] Forked background command [pid 3409]: /usr/lib/frr/watchfrr.sh restart all
May 28 18:40:14 bart watchfrr.sh: Cannot stop staticd: pid file not found
May 28 18:40:14 bart watchfrr.sh: Cannot stop zebra: pid file not found
May 28 18:40:14 bart zebra[3422]: client 15 says hello and bids fair to announce only static routes vrf=0
May 28 18:40:14 bart watchfrr[3407]: zebra state -> up : connect succeeded
May 28 18:40:14 bart watchfrr[3407]: staticd state -> up : connect succeeded
May 28 18:40:14 bart watchfrr[3407]: all daemons up, doing startup-complete notify
May 28 18:40:14 bart frrinit.sh[3378]:  * Started watchfrr
May 28 18:42:08 bart rsyslogd: file '/var/log/frr/frr.log': open error: Permission denied [v8.32.0 try http://www.rsyslog.com/e/2433 ]
May 28 18:42:09 bart frrinit.sh[3943]:  * Stopped watchfrr
May 28 18:42:09 bart frrinit.sh[3943]:  * Cannot stop bgpd: pid file not found
May 28 18:42:09 bart frrinit.sh[3943]:  * Stopped staticd
May 28 18:42:09 bart frrinit.sh[3943]:  * Stopped zebra
May 28 18:42:09 bart watchfrr.sh: Cannot stop bgpd: pid file not found
May 28 18:42:09 bart watchfrr.sh: Cannot stop staticd: pid file not found
May 28 18:42:09 bart watchfrr.sh: Cannot stop zebra: pid file not found
May 28 18:42:09 bart frrinit.sh[3966]:  * Started watchfrr
May 28 18:46:07 bart watchfrr.sh: Cannot stop bgpd: pid 4020 not running
May 28 18:59:30 bart frrinit.sh[4247]:  * Stopped watchfrr
May 28 18:59:30 bart frrinit.sh[4247]:  * Stopped zebra
May 28 18:59:30 bart frrinit.sh[4247]:  * Stopped staticd
May 28 18:59:30 bart frrinit.sh[4247]:  * Stopped bgpd
May 28 18:59:30 bart watchfrr.sh: Cannot stop staticd: pid file not found
May 28 18:59:30 bart watchfrr.sh: Cannot stop zebra: pid file not found
May 28 18:59:30 bart watchfrr.sh: Cannot stop bgpd: pid file not found
May 28 18:59:31 bart frrinit.sh[4272]:  * Started watchfrr
May 28 19:00:21 bart watchfrr.sh: Cannot stop bgpd: pid 4328 not running
May 29 14:49:14 bart watchfrr.sh: Cannot stop bgpd: pid 4383 not running
ton31337 commented 4 years ago

Are you able to catch a core dump and send me to inspect it?

kruisdraad commented 4 years ago

@ton31337 eeerm if you tell me what you require i can type it ... also happy to give access to the VM true a screen sharing or something so you can actually see it happen and how, including the config how its implemented.

ton31337 commented 4 years ago

that would be easier :)

kruisdraad commented 4 years ago

@ton31337 send ya an e-mail with session info

ton31337 commented 4 years ago

Confirmed, I managed to replicate it.