]> git.puffer.fish Git - matthieu/frr.git/commit
bgpd: Fix crash when going down
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 20 May 2017 12:22:23 +0000 (08:22 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 20 May 2017 12:22:23 +0000 (08:22 -0400)
commita24dae86e1a03e2809aaaf4c7721e3c3289fc6da
treeadf8d4c42234168ab9cb446b8e9f6f2f932f3507
parent69b174d4ec7d347054761d4ddcddba096c9c4ece
bgpd: Fix crash when going down

When bgp is sent a SIGINT signal with vrf's configured
bgp proceeds to crash on the way down.  This is because
the bm->bgp list was deleted( but the pointer was kept around)
and then later in the going down process vrf_terminate is called
which attempts to find any associated processes.  Since memory
has been freed and subsuquently used for something else
we get a corrupt bgp pointer and bgp crashes.

Here is the trace:

(gdb) bt
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
    at sigevent.c:255
    at thread.c:1315
(gdb)

Multiple protocols besides bgp and zebra running are needed to make
this happen as well.  So a weird timing related issue?

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_main.c