frr icon indicating copy to clipboard operation
frr copied to clipboard

PIM6d:- Core observed after removing pimv6 from source interface

Open vijaykug opened this issue 3 years ago • 2 comments

Issue- In my Ixia----FHR---LHR---RP setup , i have removed pimv6 ("no ipv6 pim" ) from FHR source ( ixia connected) interface . Below core observed

root@R4:/var/lib/systemd/coredump# gdb /usr/lib/frr/pim6d core.pim6d.113.8ef143bbdcad4d6989a1380671bc6980.27967.1662763689000000
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
Copyright (C) 2018 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".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
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/lib/frr/pim6d...Reading symbols from /usr/lib/debug/.build-id/0c/2e64b8a164c958c9eb7659f9e8d3ac5559f936.debug...done.
done.
[New LWP 27967]
[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/frr/pim6d -d -F traditional -A ::1'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:51
51      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007f3fce10b42c in core_handler (signo=11, siginfo=0x7fff72c8c8f0, context=<optimized out>) at lib/sigevent.c:261
#2  <signal handler called>
#3  0x0000555f446c0867 in pim_upstream_kat_start_ok (up=0x555f45a1e4e0) at pimd/pim_upstream.c:1989
#4  pim_upstream_sg_running_proc (up=0x555f45a1e4e0) at pimd/pim_upstream.c:2029
#5  0x00007f3fce1265e7 in wheel_timer_thread_helper (t=<optimized out>) at lib/wheel.c:55
#6  0x00007f3fce11cf7d in thread_call (thread=0x555f459e57d0) at lib/thread.c:2005
#7  0x00007f3fce11d273 in _thread_execute (xref=0x7f3fce3d2600 <_xref.10900>, m=0x555f4578dc20, func=<optimized out>, arg=0x555f458edf00, val=0)
    at lib/thread.c:2097
#8  0x00007f3fce11cf7d in thread_call (thread=thread@entry=0x7fff72c8cf70) at lib/thread.c:2005
#9  0x00007f3fce0d76f8 in frr_run (master=0x555f4578dc20) at lib/libfrr.c:1198
#10 0x0000555f4468e8ba in main (argc=6, argv=0x7fff72c8d288, envp=<optimized out>) at pimd/pim6_main.c:199
(gdb) bt full
#0  raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:51
        set = {__val = {18446744067266829055, 140735119148503, 167, 0, 0, 0, 7018141387277233769, 93867660738816, 140735119148544, 139912016703203, 
            140735119148464, 139912016703142, 3539864629463228448, 3834033537019818553, 6875981782654727729, 7526745822175521140}}
        pid = <optimized out>
        tid = <optimized out>
        ret = <optimized out>
#1  0x00007f3fce10b42c in core_handler (signo=11, siginfo=0x7fff72c8c8f0, context=<optimized out>) at lib/sigevent.c:261
        pc = <optimized out>
        sa_default = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, 
          sa_restorer = 0x0}
        sigset = {__val = {9216, 0 <repeats 15 times>}}
#2  <signal handler called>
No locals.
#3  0x0000555f446c0867 in pim_upstream_kat_start_ok (up=0x555f45a1e4e0) at pimd/pim_upstream.c:1989
        c_oil = 0x555f45a1e670
        ifp = 0x555f459c2fe0
        pim_ifp = 0x0
        c_oil = <optimized out>
        ifp = <optimized out>
        pim_ifp = <optimized out>
#4  pim_upstream_sg_running_proc (up=0x555f45a1e4e0) at pimd/pim_upstream.c:2029
        rv = false
        pim = <optimized out>
        __func__ = "pim_upstream_sg_running_proc"
#5  0x00007f3fce1265e7 in wheel_timer_thread_helper (t=<optimized out>) at lib/wheel.c:55
        node = <optimized out>
        nextnode = 0x0
        curr_slot = 23
        slots_to_skip = 1
        wheel = 0x555f458edf00
        data = <optimized out>
        __func__ = "wheel_timer_thread_helper"
        _xrefdata = {xrefdata = {xref = 0x7f3fce3d25c0 <_xref.10877>, uid = "N0CA3-ZVMV3\000\000\000\000", 
            hashstr = 0x7f3fce16b4e8 "%s: Wheel Slot: %lld(%lld) count: %d", hashu32 = {7, 0}, xui = {re = {
                rbt_parent = 0x7f3fce3df9a8 <_xrefdata.18154+40>, rbt_left = 0x555f44922608 <_xrefdata.23105+40>, 
                rbt_right = 0x555f44924208 <_xrefdata.23078+40>, rbt_color = 1}}}, fl_print_bt = 0 '\000'}
        _xref = {xref = {xrefdata = 0x7f3fce3e86a0 <_xrefdata.10876>, type = XREFT_LOGMSG, line = 51, file = 0x7f3fce16b3a7 "lib/wheel.c", 
            func = 0x7f3fce16b470 <__func__.10878> "wheel_timer_thread_helper"}, fmtstring = 0x7f3fce16b4e8 "%s: Wheel Slot: %lld(%lld) count: %d", 
          priority = 7, ec = 0, args = 0x7f3fce16b510 "__func__, wheel->curr_slot, curr_slot, ((wheel->wheel_slot_lists[curr_slot])->count)"}
        xref_p_1 = 0x7f3fce3d25c0 <_xref.10877>
        _xref = {xref = {xrefdata = 0x0, type = XREFT_ASSERT, line = 54, file = 0x7f3fce16b3a7 "lib/wheel.c", 
            func = 0x7f3fce16b470 <__func__.10878> "wheel_timer_thread_helper"}, expr = 0x7f3fce166a52 "node", extra = 0x0, args = 0x0}
        xref_p_2 = 0x7f3fce3d2580 <_xref.10880>
#6  0x00007f3fce11cf7d in thread_call (thread=0x555f459e57d0) at lib/thread.c:2005
        before = {cpu = {tv_sec = 0, tv_nsec = 98232239}, real = {tv_sec = 9753762, tv_usec = 713116}}
        after = {cpu = {tv_sec = 0, tv_nsec = 140735119150672}, real = {tv_sec = 713113, tv_usec = 139912017261552}}
        cputime_enabled_here = true
        walltime = <optimized out>
        cputime = 139912016940686
        exp = <optimized out>
        __func__ = <optimized out>
#7  0x00007f3fce11d273 in _thread_execute (xref=0x7f3fce3d2600 <_xref.10900>, m=0x555f4578dc20, func=<optimized out>, arg=0x555f458edf00, val=0)
    at lib/thread.c:2097
        thread = 0x555f459e57d0
#8  0x00007f3fce11cf7d in thread_call (thread=thread@entry=0x7fff72c8cf70) at lib/thread.c:2005
        before = {cpu = {tv_sec = 0, tv_nsec = 98232239}, real = {tv_sec = 9753762, tv_usec = 713116}}
        after = {cpu = {tv_sec = 0, tv_nsec = 98191382}, real = {tv_sec = 9753761, tv_usec = 564922}}
---Type <return> to continue, or q <return> to quit--- 
        cputime_enabled_here = true
        walltime = <optimized out>
        cputime = 0
        exp = <optimized out>
        __func__ = <optimized out>
#9  0x00007f3fce0d76f8 in frr_run (master=0x555f4578dc20) at lib/libfrr.c:1198
        instanceinfo = '\000' <repeats 63 times>
        __func__ = "frr_run"
        thread = {type = 4 '\004', add_type = 2 '\002', threaditem = {si = {next = 0x0}}, timeritem = {hi = {index = 0}}, ref = 0x555f458edf38, 
          master = 0x555f4578dc20, func = 0x7f3fce1264b0 <wheel_timer_thread>, arg = 0x555f458edf00, u = {val = 9753762, fd = 9753762, sands = {
              tv_sec = 9753762, tv_usec = 712840}}, real = {tv_sec = 9753762, tv_usec = 713116}, hist = 0x555f458ef600, yield = 10000, 
          xref = 0x7f3fce3d2500 <_xref.10894>, mtx = pthread_mutex_t = {Type = Normal, Status = Not acquired, Robust = No, Shared = No, Protocol = None}, 
          ignore_timer_late = false}
#10 0x0000555f4468e8ba in main (argc=6, argv=0x7fff72c8d288, envp=<optimized out>) at pimd/pim6_main.c:199
        longopts = {{name = 0x0, has_arg = 0, flag = 0x0, val = 0}}

vijaykug avatar Sep 10 '22 05:09 vijaykug

This issue is same as #10782

mobash-rasool avatar Sep 14 '22 09:09 mobash-rasool

Root cause is found, working on the fix.

patrasar avatar Sep 20 '22 14:09 patrasar

Dup https://github.com/FRRouting/frr/issues/10782

ton31337 avatar Oct 20 '22 07:10 ton31337