[cmaster-next] [PATCH] bgpd: Fix multiple bgp view vnc crash

Lou Berger lberger at labn.net
Thu Dec 1 05:41:21 EST 2016


I'll see if I can duplicate your setup today....

Lou


On November 30, 2016 10:33:18 PM "Martin Winter" 
<mwinter at opensourcerouting.org> wrote:

> Bad luck, this doesn’t fix it.
>
> New traceback:
>
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library
> "/lib/x86_64-linux-gnu/libthread_db.so.1".
> Core was generated by `/usr/lib/quagga/bgpd -d'.
> Program terminated with signal SIGABRT, Aborted.
> #0  0x00007fef8cecb428 in __GI_raise (sig=sig at entry=6) at
> ../sysdeps/unix/sysv/linux/raise.c:54
> #0  0x00007fef8cecb428 in __GI_raise (sig=sig at entry=6) at
> ../sysdeps/unix/sysv/linux/raise.c:54
> #1  0x00007fef8cecd02a in __GI_abort () at abort.c:89
> #2  0x00007fef8d7b52be in core_handler (signo=<optimized out>,
> siginfo=<optimized out>, context=<optimized out>) at sigevent.c:242
> #3  <signal handler called>
> #4  vnc_rhnck (tag=tag at entry=0x7fffad18a1a8 "vnc_import_bgp_add_route:
> enter") at rfapi/vnc_import_bgp.c:254
> #5  0x00000000004b02e5 in vnc_import_bgp_add_route
> (bgp=bgp at entry=0x229dcd0, prefix=prefix at entry=0x22ba000,
> info=info at entry=0x22ba670) at rfapi/vnc_import_bgp.c:2770
> #6  0x000000000044a25b in bgp_process_main (wq=<optimized out>,
> data=<optimized out>) at bgp_route.c:1974
> #7  0x00007fef8d7b5dad in work_queue_run (thread=0x7fffad18c4f8) at
> workqueue.c:308
> #8  0x00007fef8d79e70e in thread_call
> (thread=thread at entry=0x7fffad18c4f8) at thread.c:1442
> #9  0x000000000042c586 in main (argc=2, argv=0x7fffad18c698) at
> bgp_main.c:567
>
>
> Here is the relevant code (with the patch)
>
> 244:	#ifdef ENABLE_VNC_RHNCK
> 245:	static void
> 246:	vnc_rhnck (char *tag)
> 247:	{
> 248:	  struct bgp *bgp;
> 249:	  struct skiplist *sl;
> 250:	  struct skiplistnode *p;
> 251:
> 252:	  bgp = bgp_get_default ();
> 253:
> 254:	  sl = bgp->rfapi->resolve_nve_nexthop;
> 255:
> 256:	  if (!sl)
> 257:		return;
>
> The issue is in line 254 - before the fix.
> In this testcase we enter the function with bgp=0.
>
> - Martin
>
>
> On 30 Nov 2016, at 6:27, Donald Sharp wrote:
>
>> When configuring multiple bgp views without a default
>> bgp session, the code will crash.
>>
>> This code change only fixes the crash from happening.  I'm not
>> entirely sure that the code will not misbehave with multiple
>> bgp views and configuring vnc in this case.
>>
>> Signed-off-by: Donald Sharp <sharpd at cumulusnetworks.com>
>> ---
>>  bgpd/rfapi/vnc_import_bgp.c | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/bgpd/rfapi/vnc_import_bgp.c b/bgpd/rfapi/vnc_import_bgp.c
>> index 4215ce2..441bdee 100644
>> --- a/bgpd/rfapi/vnc_import_bgp.c
>> +++ b/bgpd/rfapi/vnc_import_bgp.c
>> @@ -1798,6 +1798,9 @@ vnc_import_bgp_exterior_add_route_it (
>>    struct bgp *bgp_default = bgp_get_default ();
>>    afi_t afi = family2afi (prefix->family);
>>
>> +  if (!bgp_default)
>> +    return;
>> +
>>    h = bgp_default->rfapi;
>>    hc = bgp_default->rfapi_cfg;
>>
>> @@ -1992,6 +1995,9 @@ vnc_import_bgp_exterior_del_route (
>>    afi_t afi = family2afi (prefix->family);
>>    struct bgp *bgp_default = bgp_get_default ();
>>
>> +  if (!bgp_default)
>> +    return;
>> +
>>    memset (&pfx_orig_nexthop, 0, sizeof (struct prefix));        /*
>> keep valgrind happy */
>>
>>    h = bgp_default->rfapi;
>> --
>> 2.5.5
>>
>>
>> _______________________________________________
>> cmaster-next mailing list
>> cmaster-next at lists.nox.tf
>> https://lists.nox.tf/listinfo/cmaster-next
>






More information about the dev mailing list