[prev in list] [next in list] [prev in thread] [next in thread] 

List:       juniper-nsp
Subject:    Re: [j-nsp] RPD coring today?
From:       Martin Tonusoo via juniper-nsp <juniper-nsp () puck ! nether ! net>
Date:       2022-09-25 22:43:47
Message-ID: CAGhV4zX87yCczhh5dt3nPTEKa84V6Ex4pyAn295ip8txJBp1nQ () mail ! gmail ! com
[Download RAW message or body]

> > What does this show:
> >
> > show system core-dump core-file-info /path/to/corefile
>
> gdb was removed from junos somewhere around 16. This unfortunately
> doesn't work anymore. It was quite handy.

While it's obviously not that convenient, then one can prepare a VM with
necessary shared libraries from Junos and use gdb there. For example, here
is the backtrace of the rpd core dump from Junos 17.3R3-S11.4 opened in gdb
11.2 for FreeBSD:

(gdb) bt
#0  0x00000000c9c24b7a in __sys_thr_kill () from /root/libs/lib/libc.so.7
#1  0x00000000c9c24a64 in raise () from /root/libs/lib/libc.so.7
#2  0x00000000c9c23690 in abort () from /root/libs/lib/libc.so.7
#3  0x00000000c9c06815 in __assert () from /root/libs/lib/libc.so.7
#4  0x000000000166549f in tag_unlock_tag_label_elm ()
#5  0x0000000001661592 in tag_gw_unlock_tag_label_elm ()
#6  0x000000000153024a in rt_nexthops_free ()
#7  0x0000000001544b1a in rt_change_parms ()
#8  0x000000000155243f in rt_change_ribgroup_import ()
#9  0x0000000000a3d01f in bgp_ribgroup_change_rt ()
#10 0x0000000000a051fe in bgp_sync_cb ()
#11 0x00000000015593bf in rt_nh_change_cb ()
#12 0x00000000015537f9 in rt_nh_change_immediate_cb ()
#13 0x0000000001555cc9 in rt_nh_resolve_change ()
#14 0x0000000000a041e8 in bgp_rt_cnh_resolve_change ()
#15 0x0000000000a0581f in bgp_sync_rt_change ()
#16 0x0000000000a56401 in bgp_rt_change ()
#17 0x0000000000a58c45 in bgp_rcv_nlri ()
#18 0x0000000000a5a8da in bgp_read_v4_update ()
#19 0x00000000009df4ec in bgp_handle_update ()
#20 0x0000000000a1d6c1 in bgp_read_resp_process_internal ()
#21 0x0000000000a1db18 in bgp_read_resp_process ()
#22 0x00000000016f001c in task_job_run_common ()
#23 0x00000000016f1480 in task_job_bg_dispatch ()
#24 0x0000000001708625 in task_scheduler_internal ()
#25 0x0000000001709261 in task_scheduler ()
#26 0x00000000007223ff in main ()
(gdb)

As seen above, the shared object libraries from Junos were placed under
the /root/libs. Gdbinit was configured with "set sysroot /root/libs". With
the stack frame number and the function name it's possible to dig even
deeper using disassemblers like radare2.

Perhaps it's useful for somebody in the future.


Martin
_______________________________________________
juniper-nsp mailing list juniper-nsp@puck.nether.net
https://puck.nether.net/mailman/listinfo/juniper-nsp
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic