treat '-f -' as a request to read commands from stdin in a way which …#22
Closed
tjcw wants to merge 5844 commits intosonic-net:masterfrom
Closed
treat '-f -' as a request to read commands from stdin in a way which …#22tjcw wants to merge 5844 commits intosonic-net:masterfrom
tjcw wants to merge 5844 commits intosonic-net:masterfrom
Conversation
[7.5] backport recent fixes
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
[7.5] vtysh: send quit command to watchfrr
When allocating memory for the `struct ospf_metric` we were using `uint32_t` instead of the actual size of this structure. When we wrote to it we would be writing into other people's memory. Found-by: Amol Lad Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Remove py-ipaddr and ipsec-tools as deps in the Alpine build container, as these were both Python 2 libraries and are not used here anymore `ipsec-tools` is also no longer available in Alpine's test repos and was causing breakage on this builder Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
[7.5]ospfd: Prevent crash by accessing memory not owned.
When we fail to properly lookup an error code, properly cleanup on return. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
when deleting a whole l2vpn context in ldpd which also had pseudowires in it, we were first deleting the l2vpn with a 'no l2vpn XXX' command, and then adding it again by running 'l2vpn XXX\n no member pseudowire YYY' which obviously was not needed. As a result the l2vpn would be reinstated. Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
If we screw up and don't have the right flags we'll print out garbage. At the very least just print out nothing. Signed-off-by: Donald Sharp <sharp@nvidia.com>
OSPFv3 snmp code creates a list but never deletes the actual list. Do so. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
If we are attempting to store the bgp name for route leaking and we find a match do not leak the memory. Please note this is probably not really going to happen ever. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
We were allocating but never freeing memory associated with the ecommunity_ecom2str allocation. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Allows users with multiple links using same IPv6 address (same VRF) to work. Reported-by: Matti Suuronen Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Apparently the person who wrote this code was big into cut-n-paste. Commit 710a61d found the first instance, but upon code inspection this morning it became evident that 2 other functions had the exact same problem. Fix. Note I have not cleaned up the cut-n-paste code for two reasons: a) I'm chasing something else b) this code has been fairly un-maintained for a very long time. No need to start up now. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Having 2 ABR in NSSA area where R3 is the elected translator R3# show ip ospf We are an ABR and the NSSA Elected Translator. R2# show ip ospf We are an ABR, but not the NSSA Elected Translator. When R3 loses the Border condition by shutting down the interface to the backbone, we end up with no translator in the NSSA area. It is expected R2 to take over the translator role R3# sh ip ospf It is not ABR, therefore not Translator. R2# show ip ospf We are an ABR, but not the NSSA Elected Translator. This PR forces the ABR to reevaluate the translator condition, so R2 becomes the elected Translator Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
When an ABR NSSA router is configured to be ALWAYS the translator:
r22(config-router)# area 1 nssa translate-always
It will advertise this condition in the type-1 LSA setting the Nt
bit, taking over the translator role from r33
r22# show ip ospf
We are an ABR and always an NSSA Translator.
r33# show ip ospf
We are an ABR, but not the NSSA Elected Translator.
However when the command above is removed:
r22(config-router)# no area 1 nssa translate-always
the bit Nt needs to be cleared otherwise we end up with no translator
in the area
r22# show ip ospf
We are an ABR, but not the NSSA Elected Translator.
r33# show ip ospf
We are an ABR, but not the NSSA Elected Translator.
This PR forces the ABR to send a type-1 LSA with the Nt bit updated
according to the translator role
Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
… max-paths
problem
1. run the bgp with -e1 option
2. c t
router bgp 100
3. show running config
!
address-family ipv6 multicast
maximum-paths 1
maximum-paths ibgp 1
exit-address-family
!
address families should not dump maximum-paths if there
value is same as value provided at run time.
fix
if the maxpaths_ebgp value is same as multipath_num global
object, don't dump maximum-paths.
Signed-off-by: vishaldhingra <vdhingra@vmware.com>
The "ifp" variable returned by nb_running_get_entry() might be NULL when using the transactional CLI mode. Make the required modifications to avoid null pointer dereferences. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
vertex->N is an union whose "id" and "ip" fields are only valid depending on the vertex type (IS adjacency or IP reachability information). As such, add a vertex type check before consulting vertex->N.id in order to prevent unexpected behavior from happening. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
We are using data after it has been freed and handed back to the OS. Address Sanitizer output: error 23-Nov-2020 18:53:57 ERROR: AddressSanitizer: heap-use-after-free on address 0x631000024838 at pc 0x55f825998f58 bp 0x7fffa5b0f5b0 sp 0x7fffa5b0f5a0 error 23-Nov-2020 18:53:57 READ of size 4 at 0x631000024838 thread T0 error 23-Nov-2020 18:53:57 #0 0x55f825998f57 in lde_imsg_compose_parent_sync ldpd/lde.c:226 error 23-Nov-2020 18:53:57 sonic-net#1 0x55f8259ca9ed in vlog ldpd/log.c:48 error 23-Nov-2020 18:53:57 sonic-net#2 0x55f8259cb1c8 in log_info ldpd/log.c:102 error 23-Nov-2020 18:53:57 sonic-net#3 0x55f82599e841 in lde_shutdown ldpd/lde.c:208 error 23-Nov-2020 18:53:57 sonic-net#4 0x55f8259a2703 in lde_dispatch_parent ldpd/lde.c:666 error 23-Nov-2020 18:53:57 sonic-net#5 0x55f825ac3815 in thread_call lib/thread.c:1681 error 23-Nov-2020 18:53:57 sonic-net#6 0x55f825998d5e in lde ldpd/lde.c:160 error 23-Nov-2020 18:53:57 sonic-net#7 0x55f82598a289 in main ldpd/ldpd.c:320 error 23-Nov-2020 18:53:57 sonic-net#8 0x7fe3f749db96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) error 23-Nov-2020 18:53:57 sonic-net#9 0x55f825982579 in _start (/usr/lib/frr/ldpd+0xb3579) error 23-Nov-2020 18:53:57 error 23-Nov-2020 18:53:57 0x631000024838 is located 65592 bytes inside of 65632-byte region [0x631000014800,0x631000024860) error 23-Nov-2020 18:53:57 freed by thread T0 here: error 23-Nov-2020 18:53:57 #0 0x7fe3f8a4d7a8 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde7a8) error 23-Nov-2020 18:53:57 sonic-net#1 0x55f82599e830 in lde_shutdown ldpd/lde.c:206 error 23-Nov-2020 18:53:57 sonic-net#2 0x55f8259a2703 in lde_dispatch_parent ldpd/lde.c:666 error 23-Nov-2020 18:53:57 sonic-net#3 0x55f825ac3815 in thread_call lib/thread.c:1681 error 23-Nov-2020 18:53:57 sonic-net#4 0x55f825998d5e in lde ldpd/lde.c:160 error 23-Nov-2020 18:53:57 sonic-net#5 0x55f82598a289 in main ldpd/ldpd.c:320 error 23-Nov-2020 18:53:57 sonic-net#6 0x7fe3f749db96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) error 23-Nov-2020 18:53:57 error 23-Nov-2020 18:53:57 previously allocated by thread T0 here: error 23-Nov-2020 18:53:57 #0 0x7fe3f8a4dd28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) error 23-Nov-2020 18:53:57 sonic-net#1 0x55f825998cb7 in lde ldpd/lde.c:151 error 23-Nov-2020 18:53:57 sonic-net#2 0x55f82598a289 in main ldpd/ldpd.c:320 error 23-Nov-2020 18:53:57 sonic-net#3 0x7fe3f749db96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) error 23-Nov-2020 18:53:57 The fix is to put this in global space. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
error 26-Nov-2020 14:35:02 ERROR: AddressSanitizer: heap-use-after-free on address 0x631000024838 at pc 0x55cefae977e9 bp 0x7ffdd3546860 sp 0x7ffdd3546850 error 26-Nov-2020 14:35:02 READ of size 4 at 0x631000024838 thread T0 error 26-Nov-2020 14:35:02 #0 0x55cefae977e8 in ldpe_imsg_compose_parent_sync ldpd/ldpe.c:256 error 26-Nov-2020 14:35:02 sonic-net#1 0x55cefae9ab13 in vlog ldpd/log.c:53 error 26-Nov-2020 14:35:02 sonic-net#2 0x55cefae9b21f in log_info ldpd/log.c:102 error 26-Nov-2020 14:35:02 sonic-net#3 0x55cefae96eae in ldpe_shutdown ldpd/ldpe.c:237 error 26-Nov-2020 14:35:02 sonic-net#4 0x55cefae99254 in ldpe_dispatch_main ldpd/ldpe.c:585 error 26-Nov-2020 14:35:02 sonic-net#5 0x55cefaf93875 in thread_call lib/thread.c:1681 error 26-Nov-2020 14:35:02 sonic-net#6 0x55cefae97304 in ldpe ldpd/ldpe.c:136 error 26-Nov-2020 14:35:02 sonic-net#7 0x55cefae5a2e2 in main ldpd/ldpd.c:322 error 26-Nov-2020 14:35:02 sonic-net#8 0x7f4ef0c33b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) error 26-Nov-2020 14:35:02 sonic-net#9 0x55cefae525e9 in _start (/usr/lib/frr/ldpd+0xb35e9) error 26-Nov-2020 14:35:02 error 26-Nov-2020 14:35:02 0x631000024838 is located 65592 bytes inside of 65632-byte region [0x631000014800,0x631000024860) error 26-Nov-2020 14:35:02 freed by thread T0 here: error 26-Nov-2020 14:35:02 #0 0x7f4ef21e37a8 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde7a8) error 26-Nov-2020 14:35:02 sonic-net#1 0x55cefae96e91 in ldpe_shutdown ldpd/ldpe.c:234 error 26-Nov-2020 14:35:02 sonic-net#2 0x55cefae99254 in ldpe_dispatch_main ldpd/ldpe.c:585 error 26-Nov-2020 14:35:02 sonic-net#3 0x55cefaf93875 in thread_call lib/thread.c:1681 error 26-Nov-2020 14:35:02 sonic-net#4 0x55cefae97304 in ldpe ldpd/ldpe.c:136 error 26-Nov-2020 14:35:02 sonic-net#5 0x55cefae5a2e2 in main ldpd/ldpd.c:322 error 26-Nov-2020 14:35:02 sonic-net#6 0x7f4ef0c33b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) error 26-Nov-2020 14:35:02 error 26-Nov-2020 14:35:02 previously allocated by thread T0 here: error 26-Nov-2020 14:35:02 #0 0x7f4ef21e3d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) error 26-Nov-2020 14:35:02 sonic-net#1 0x55cefae9725d in ldpe ldpd/ldpe.c:127 error 26-Nov-2020 14:35:02 sonic-net#2 0x55cefae5a2e2 in main ldpd/ldpd.c:322 error 26-Nov-2020 14:35:02 sonic-net#3 0x7f4ef0c33b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) Clean this problem up in the same way as the previous commit Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Source value must be a choice between host, network and any, not a set of all three. Fixes #7599. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
[7.5] yang: fix cisco access list source value
[7.5] backport fixes
OSPF instance initialization was moved from "router ospf" vty command to ospf_get function some time ago but the same thing must be done in ospf_get_instance function used when multi-instance mode is enabled. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
[7.5] ospf: fix instance initialization when using multi-instance mode
local-address is optional for both IPv4 and IPv6. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
[7.5] bfd: fix session lookup
[7.5] yang: fix zebra module
If the last message in a batched logging operation isn't printed due to priority, this skips the code that flushes prepared messages through writev() and can trigger the assert() at the end of zlog_fd(). Since any logmsg above info priority triggers a buffer flush, running into this situation requires a log file target configured for info priority, at least 1 message of info priority buffered, a debug message buffered after that, and then a buffer flush (explicit or due to buffer full). I haven't seen this chain of events happen in the wild, but it needs fixing anyway. Signed-off-by: David Lamparter <equinox@diac24.net> (cherry picked from commit db2baed)
The (legacy) code for reading split configs tries to execute config commands in parent nodes, but doesn't call the node_exit function when it goes up to a parent node. This breaks BGP RPKI setup (and extended syslog, which is in the next commit.) Doing this correctly is a slight bit involved since the node_exit callbacks should only be called if the command is actually executed on a parent node. Signed-off-by: David Lamparter <equinox@diac24.net> (cherry picked from commit e347606)
…s error vtysh will return an informational message to the user that changing any graceful-shutdown related parameter will require a peer reset. This is should not be treated as an error message (resulting in a return code of 1) but rather as a simple information to the user. This fixes GitHub issue FRRouting/frr#8403 $ vtysh -c configure -c 'router bgp 100' -c 'bgp graceful-restart' Graceful restart configuration changed, reset all peers to take effect $ echo $? 0 Signed-off-by: Christian Poessinger <christian@poessinger.com> (cherry picked from commit 5b899e9)
When the user adds the route + nexthop pair that already exists with a different distance, we should replace it instead of adding a new one. Likewise, when the user wants to delete the route + nexthop pair without explicitly entering the distance, we should delete the route. Fixes #8695. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Prior to this commit, updating a prefix-list that is referenced by a
route-map clause will unconditionally delete the root node of that
route-map's prefix-tree (used with route-map optimization).
This is problematic because routes not matching a more specific node
in the tree (i.e. other prefix-list sequences) will not fall-back to
the default node, thus they will not hit any route-map sequences.
This commit ensures that an update to a prefix-list will only delete
the default node while adding the first/only seq to the list.
Example config:
========
ip prefix-list peer475-out-pfxlist seq 45 permit 2.138.0.0/16
ip prefix-list peer475-out-pfxlist seq 50 permit 0.0.0.0/0
!
route-map peer475-out permit 5
match ip address prefix-list peer475-out-pfxlist
Before:
========
ub20# do show route-map peer475-out prefix-table
ZEBRA:
IPv4 Prefix Route-map Index List
_______________ ____________________
0.0.0.0/0 (2)
(P)
peer475-out seq 5
2.138.0.0/16 (2)
(P) 0.0.0.0/0
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
BGP:
IPv4 Prefix Route-map Index List
_______________ ____________________
0.0.0.0/0 (2)
(P)
peer475-out seq 5
2.138.0.0/16 (2)
(P) 0.0.0.0/0
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
ub20# conf t
ub20(config)# ip prefix-list peer475-out-pfxlist seq 45 permit 2.138.0.0/16 le 32
ub20(config)# do show route-map peer475-out prefix-table
ZEBRA:
IPv4 Prefix Route-map Index List
_______________ ____________________
2.138.0.0/16 (2)
(P)
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
BGP:
IPv4 Prefix Route-map Index List
_______________ ____________________
2.138.0.0/16 (2)
(P)
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
ub20(config)#
After:
========
ub20(config)# do show route-map peer475-out prefix-table
ZEBRA:
IPv4 Prefix Route-map Index List
_______________ ____________________
0.0.0.0/0 (2)
(P)
peer475-out seq 5
2.138.0.0/16 (2)
(P) 0.0.0.0/0
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
BGP:
IPv4 Prefix Route-map Index List
_______________ ____________________
0.0.0.0/0 (2)
(P)
peer475-out seq 5
2.138.0.0/16 (2)
(P) 0.0.0.0/0
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
ub20(config)# ip prefix-list peer475-out-pfxlist seq 45 permit 2.138.0.0/16 le 32
ub20(config)# do show route-map peer475-out prefix-table
ZEBRA:
IPv4 Prefix Route-map Index List
_______________ ____________________
0.0.0.0/0 (2)
(P)
peer475-out seq 5
2.138.0.0/16 (2)
(P) 0.0.0.0/0
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
BGP:
IPv4 Prefix Route-map Index List
_______________ ____________________
0.0.0.0/0 (2)
(P)
peer475-out seq 5
2.138.0.0/16 (2)
(P) 0.0.0.0/0
peer475-out seq 5
IPv6 Prefix Route-map Index List
_______________ ____________________
ub20(config)#
Fixes: 8410
Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
(cherry picked from commit 4718791)
[7.5] lib: fix handling of rmap prefix-tree default node
Backport the fix for #8695 to 7.5
Almost all functions currently marked with pure attribute acquire a route_node lock. By marking them pure we allow compiler to optimize the code and not call them when it already knows the return value. This is completely incorrect. Only two of eleven functions can be marked as pure. And they still won't be optimized because they are never called from the same function twice. Let's remove the ext_pure macro completely to reduce the chance of repeating this mistake in the future. Fixes #8866, #8809, #8595, #6992. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> (cherry picked from commit 4f08c71)
Currently, if the routemap already exists, we delete the pointer to it when it is updated. We should delete the pointer only if the route-map is actually deleted. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> (cherry picked from commit 0fddd86)
ospfd: fix routemap update (backport #8874)
lib: remove pure attribute from functions that modify memory (backport #8876)
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io> Signed-off-by: Christian Poessinger <christian@poessinger.com> (cherry picked from commit ee96c52)
zebra was crashing when the command was run on a non-existent VNI. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> root@torm-12:mgmt:~# net show evpn es-evi vni 16777215 VNI 16777215 doesn't exist root@torm-12:mgmt:~# net show evpn es-evi vni 16777215 detail VNI 16777215 doesn't exist root@torm-12:mgmt:~# net show evpn es-evi vni 16777215 json [ ] root@torm-12:mgmt:~# net show evpn es-evi vni 16777215 detail json [ ] root@torm-12:mgmt:~# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Ticket: CM-30232 Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
zebra: [7.5] handle "show evpn es-evi" a non-existent VNI
frr-reload: FRR 7.5 bfdd backport
There exists some rare situations where fpm will attempt to send a route update with no valid nexthops. In that case an assert would be hit. This is not good for trying to keep your routing daemons up and running when we can safely just recover the situation. Fixes #7588 Signed-off-by: batmancn <batmanustc@gmail.com> <fixed commit message, and used zlog_err> Signed-off-by: Donald Sharp <sharpd@nvidia.com> (cherry picked from commit 5306e6c)
zebra: bugfix of error quit of zebra, due to no nexthop ACTIVE (backport #9214)
6e62c20 to
26938ab
Compare
…works with a pipe or a file redirection Write to stdout if in a pipe Need to update the header for vtysh_read_file Try without a comment
26938ab to
2e10d64
Compare
|
This pull request introduces 8 alerts when merging 2e10d64 into 88351c8 - view on LGTM.com new alerts:
|
Author
|
Wrong place to make this commit. Closing. |
marcosfsch
pushed a commit
to marcosfsch/sonic-frr
that referenced
this pull request
Jan 30, 2024
This commit ensures proper cleanup by deleting the gm_join_list when a PIM interface is deleted. The gm_join_list was previously not being freed, causing a memory leak.
The ASan leak log for reference:
```
***********************************************************************************
Address Sanitizer Error detected in multicast_mld_join_topo1.test_multicast_mld_local_join/r1.asan.pim6d.28070
=================================================================
==28070==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 40 byte(s) in 1 object(s) allocated from:
#0 0x7f3605dbfd28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
sonic-net#1 0x56230373dd6b in qcalloc lib/memory.c:105
sonic-net#2 0x56230372180f in list_new lib/linklist.c:49
sonic-net#3 0x56230361b589 in pim_if_gm_join_add pimd/pim_iface.c:1313
sonic-net#4 0x562303642247 in lib_interface_gmp_address_family_static_group_create pimd/pim_nb_config.c:2868
sonic-net#5 0x562303767280 in nb_callback_create lib/northbound.c:1235
sonic-net#6 0x562303767280 in nb_callback_configuration lib/northbound.c:1579
sonic-net#7 0x562303768a1d in nb_transaction_process lib/northbound.c:1710
sonic-net#8 0x56230376904a in nb_candidate_commit_apply lib/northbound.c:1104
sonic-net#9 0x5623037692ba in nb_candidate_commit lib/northbound.c:1137
sonic-net#10 0x562303769dec in nb_cli_classic_commit lib/northbound_cli.c:49
sonic-net#11 0x56230376fb79 in nb_cli_pending_commit_check lib/northbound_cli.c:88
sonic-net#12 0x5623036c5bcb in cmd_execute_command_real lib/command.c:991
sonic-net#13 0x5623036c5f1b in cmd_execute_command lib/command.c:1053
sonic-net#14 0x5623036c6392 in cmd_execute lib/command.c:1221
sonic-net#15 0x5623037e75da in vty_command lib/vty.c:591
sonic-net#16 0x5623037e7a74 in vty_execute lib/vty.c:1354
sonic-net#17 0x5623037f0253 in vtysh_read lib/vty.c:2362
sonic-net#18 0x5623037db4e8 in event_call lib/event.c:1995
sonic-net#19 0x562303720f97 in frr_run lib/libfrr.c:1213
sonic-net#20 0x56230368615d in main pimd/pim6_main.c:184
sonic-net#21 0x7f360461bc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)
Indirect leak of 192 byte(s) in 4 object(s) allocated from:
#0 0x7f3605dbfd28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
sonic-net#1 0x56230373dd6b in qcalloc lib/memory.c:105
sonic-net#2 0x56230361b91d in gm_join_new pimd/pim_iface.c:1288
sonic-net#3 0x56230361b91d in pim_if_gm_join_add pimd/pim_iface.c:1326
sonic-net#4 0x562303642247 in lib_interface_gmp_address_family_static_group_create pimd/pim_nb_config.c:2868
sonic-net#5 0x562303767280 in nb_callback_create lib/northbound.c:1235
sonic-net#6 0x562303767280 in nb_callback_configuration lib/northbound.c:1579
sonic-net#7 0x562303768a1d in nb_transaction_process lib/northbound.c:1710
sonic-net#8 0x56230376904a in nb_candidate_commit_apply lib/northbound.c:1104
sonic-net#9 0x5623037692ba in nb_candidate_commit lib/northbound.c:1137
sonic-net#10 0x562303769dec in nb_cli_classic_commit lib/northbound_cli.c:49
sonic-net#11 0x56230376fb79 in nb_cli_pending_commit_check lib/northbound_cli.c:88
sonic-net#12 0x5623036c5bcb in cmd_execute_command_real lib/command.c:991
sonic-net#13 0x5623036c5f1b in cmd_execute_command lib/command.c:1053
sonic-net#14 0x5623036c6392 in cmd_execute lib/command.c:1221
sonic-net#15 0x5623037e75da in vty_command lib/vty.c:591
sonic-net#16 0x5623037e7a74 in vty_execute lib/vty.c:1354
sonic-net#17 0x5623037f0253 in vtysh_read lib/vty.c:2362
sonic-net#18 0x5623037db4e8 in event_call lib/event.c:1995
sonic-net#19 0x562303720f97 in frr_run lib/libfrr.c:1213
sonic-net#20 0x56230368615d in main pimd/pim6_main.c:184
sonic-net#21 0x7f360461bc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)
Indirect leak of 96 byte(s) in 4 object(s) allocated from:
#0 0x7f3605dbfd28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
sonic-net#1 0x56230373dd6b in qcalloc lib/memory.c:105
sonic-net#2 0x562303721651 in listnode_new lib/linklist.c:71
sonic-net#3 0x56230372182b in listnode_add lib/linklist.c:92
sonic-net#4 0x56230361ba9a in gm_join_new pimd/pim_iface.c:1295
sonic-net#5 0x56230361ba9a in pim_if_gm_join_add pimd/pim_iface.c:1326
sonic-net#6 0x562303642247 in lib_interface_gmp_address_family_static_group_create pimd/pim_nb_config.c:2868
sonic-net#7 0x562303767280 in nb_callback_create lib/northbound.c:1235
sonic-net#8 0x562303767280 in nb_callback_configuration lib/northbound.c:1579
sonic-net#9 0x562303768a1d in nb_transaction_process lib/northbound.c:1710
sonic-net#10 0x56230376904a in nb_candidate_commit_apply lib/northbound.c:1104
sonic-net#11 0x5623037692ba in nb_candidate_commit lib/northbound.c:1137
sonic-net#12 0x562303769dec in nb_cli_classic_commit lib/northbound_cli.c:49
sonic-net#13 0x56230376fb79 in nb_cli_pending_commit_check lib/northbound_cli.c:88
sonic-net#14 0x5623036c5bcb in cmd_execute_command_real lib/command.c:991
sonic-net#15 0x5623036c5f1b in cmd_execute_command lib/command.c:1053
sonic-net#16 0x5623036c6392 in cmd_execute lib/command.c:1221
sonic-net#17 0x5623037e75da in vty_command lib/vty.c:591
sonic-net#18 0x5623037e7a74 in vty_execute lib/vty.c:1354
sonic-net#19 0x5623037f0253 in vtysh_read lib/vty.c:2362
sonic-net#20 0x5623037db4e8 in event_call lib/event.c:1995
sonic-net#21 0x562303720f97 in frr_run lib/libfrr.c:1213
sonic-net#22 0x56230368615d in main pimd/pim6_main.c:184
sonic-net#23 0x7f360461bc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)
Indirect leak of 48 byte(s) in 1 object(s) allocated from:
#0 0x7f3605dbfd28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
sonic-net#1 0x56230373dd6b in qcalloc lib/memory.c:105
sonic-net#2 0x56230361b91d in gm_join_new pimd/pim_iface.c:1288
sonic-net#3 0x56230361b91d in pim_if_gm_join_add pimd/pim_iface.c:1326
sonic-net#4 0x562303642247 in lib_interface_gmp_address_family_static_group_create pimd/pim_nb_config.c:2868
sonic-net#5 0x562303767280 in nb_callback_create lib/northbound.c:1235
sonic-net#6 0x562303767280 in nb_callback_configuration lib/northbound.c:1579
sonic-net#7 0x562303768a1d in nb_transaction_process lib/northbound.c:1710
sonic-net#8 0x56230376904a in nb_candidate_commit_apply lib/northbound.c:1104
sonic-net#9 0x5623037692ba in nb_candidate_commit lib/northbound.c:1137
sonic-net#10 0x562303769dec in nb_cli_classic_commit lib/northbound_cli.c:49
sonic-net#11 0x56230376fb79 in nb_cli_pending_commit_check lib/northbound_cli.c:88
sonic-net#12 0x5623036c5bcb in cmd_execute_command_real lib/command.c:991
sonic-net#13 0x5623036c5f6f in cmd_execute_command lib/command.c:1072
sonic-net#14 0x5623036c6392 in cmd_execute lib/command.c:1221
sonic-net#15 0x5623037e75da in vty_command lib/vty.c:591
sonic-net#16 0x5623037e7a74 in vty_execute lib/vty.c:1354
sonic-net#17 0x5623037f0253 in vtysh_read lib/vty.c:2362
sonic-net#18 0x5623037db4e8 in event_call lib/event.c:1995
sonic-net#19 0x562303720f97 in frr_run lib/libfrr.c:1213
sonic-net#20 0x56230368615d in main pimd/pim6_main.c:184
sonic-net#21 0x7f360461bc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)
Indirect leak of 24 byte(s) in 1 object(s) allocated from:
#0 0x7f3605dbfd28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28)
sonic-net#1 0x56230373dd6b in qcalloc lib/memory.c:105
sonic-net#2 0x562303721651 in listnode_new lib/linklist.c:71
sonic-net#3 0x56230372182b in listnode_add lib/linklist.c:92
sonic-net#4 0x56230361ba9a in gm_join_new pimd/pim_iface.c:1295
sonic-net#5 0x56230361ba9a in pim_if_gm_join_add pimd/pim_iface.c:1326
sonic-net#6 0x562303642247 in lib_interface_gmp_address_family_static_group_create pimd/pim_nb_config.c:2868
sonic-net#7 0x562303767280 in nb_callback_create lib/northbound.c:1235
sonic-net#8 0x562303767280 in nb_callback_configuration lib/northbound.c:1579
sonic-net#9 0x562303768a1d in nb_transaction_process lib/northbound.c:1710
sonic-net#10 0x56230376904a in nb_candidate_commit_apply lib/northbound.c:1104
sonic-net#11 0x5623037692ba in nb_candidate_commit lib/northbound.c:1137
sonic-net#12 0x562303769dec in nb_cli_classic_commit lib/northbound_cli.c:49
sonic-net#13 0x56230376fb79 in nb_cli_pending_commit_check lib/northbound_cli.c:88
sonic-net#14 0x5623036c5bcb in cmd_execute_command_real lib/command.c:991
sonic-net#15 0x5623036c5f6f in cmd_execute_command lib/command.c:1072
sonic-net#16 0x5623036c6392 in cmd_execute lib/command.c:1221
sonic-net#17 0x5623037e75da in vty_command lib/vty.c:591
sonic-net#18 0x5623037e7a74 in vty_execute lib/vty.c:1354
sonic-net#19 0x5623037f0253 in vtysh_read lib/vty.c:2362
sonic-net#20 0x5623037db4e8 in event_call lib/event.c:1995
sonic-net#21 0x562303720f97 in frr_run lib/libfrr.c:1213
sonic-net#22 0x56230368615d in main pimd/pim6_main.c:184
sonic-net#23 0x7f360461bc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86)
SUMMARY: AddressSanitizer: 400 byte(s) leaked in 11 allocation(s).
***********************************************************************************
```
Signed-off-by: Keelan Cannoo <keelan.cannoo@icloud.com>
eddieruan-alibaba
pushed a commit
to eddieruan-alibaba/sonic-frr
that referenced
this pull request
Mar 11, 2025
The following ASAN error can be seen. > ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned: 0x608000036c20 > #0 0x7f3d7a4b5425 in __interceptor_malloc_usable_size ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:198 > sonic-net#1 0x7f3d7a426a16 in __sanitizer::BufferedStackTrace::Unwind(unsigned long, unsigned long, void*, bool, unsigned int) ../../../../src/libsanitizer/sanitizer_common > /sanitizer_stacktrace.h:122 > sonic-net#2 0x7f3d7a426a16 in __asan::asan_malloc_usable_size(void const*, unsigned long, unsigned long) ../../../../src/libsanitizer/asan/asan_allocator.cpp:1074 > sonic-net#3 0x7f3d7a03f330 in mt_count_free lib/memory.c:78 > sonic-net#4 0x7f3d7a03f330 in qfree lib/memory.c:130 > sonic-net#5 0x7f3d76ccf89b in bmp_peer_status_changed bgpd/bgp_bmp.c:982 > sonic-net#6 0x560ae2aa6a94 in hook_call_peer_status_changed bgpd/bgp_fsm.c:47 > sonic-net#7 0x560ae2aa6a94 in bgp_fsm_change_status bgpd/bgp_fsm.c:1287 > sonic-net#8 0x560ae2c4f2e5 in peer_delete bgpd/bgpd.c:2777 > sonic-net#9 0x560ae2c58d24 in bgp_delete bgpd/bgpd.c:4140 > sonic-net#10 0x560ae2bbb47e in no_router_bgp bgpd/bgp_vty.c:1764 > sonic-net#11 0x7f3d79fb74ed in cmd_execute_command_real lib/command.c:1003 > sonic-net#12 0x7f3d79fb78a3 in cmd_execute_command lib/command.c:1062 > sonic-net#13 0x7f3d79fb7e03 in cmd_execute lib/command.c:1228 > sonic-net#14 0x7f3d7a107b53 in vty_command lib/vty.c:625 > sonic-net#15 0x7f3d7a109902 in vty_execute lib/vty.c:1388 > sonic-net#16 0x7f3d7a10cc32 in vtysh_read lib/vty.c:2400 > sonic-net#17 0x7f3d7a0f848b in event_call lib/event.c:2019 > sonic-net#18 0x7f3d7a01e627 in frr_run lib/libfrr.c:1232 > sonic-net#19 0x560ae29e0037 in main bgpd/bgp_main.c:555 > sonic-net#20 0x7f3d79a29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 > sonic-net#21 0x7f3d79a29e3f in __libc_start_main_impl ../csu/libc-start.c:392 > sonic-net#22 0x560ae29e4ef4 in _start (/usr/lib/frr/bgpd+0x2eeef4) > > 0x608000036c20 is located 0 bytes inside of 81-byte region [0x608000036c20,0x608000036c71) > freed by thread T0 here: > #0 0x7f3d7a4b4537 in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:127 > sonic-net#1 0x7f3d76ccf85f in bmp_peer_status_changed bgpd/bgp_bmp.c:981 > sonic-net#2 0x560ae2aa6a94 in hook_call_peer_status_changed bgpd/bgp_fsm.c:47 > sonic-net#3 0x560ae2aa6a94 in bgp_fsm_change_status bgpd/bgp_fsm.c:1287 > sonic-net#4 0x560ae2c4f2e5 in peer_delete bgpd/bgpd.c:2777 > sonic-net#5 0x560ae2c58d24 in bgp_delete bgpd/bgpd.c:4140 > sonic-net#6 0x560ae2bbb47e in no_router_bgp bgpd/bgp_vty.c:1764 > sonic-net#7 0x7f3d79fb74ed in cmd_execute_command_real lib/command.c:1003 > sonic-net#8 0x7f3d79fb78a3 in cmd_execute_command lib/command.c:1062 > sonic-net#9 0x7f3d79fb7e03 in cmd_execute lib/command.c:1228 > sonic-net#10 0x7f3d7a107b53 in vty_command lib/vty.c:625 > sonic-net#11 0x7f3d7a109902 in vty_execute lib/vty.c:1388 > sonic-net#12 0x7f3d7a10cc32 in vtysh_read lib/vty.c:2400 > sonic-net#13 0x7f3d7a0f848b in event_call lib/event.c:2019 > sonic-net#14 0x7f3d7a01e627 in frr_run lib/libfrr.c:1232 > sonic-net#15 0x560ae29e0037 in main bgpd/bgp_main.c:555 > sonic-net#16 0x7f3d79a29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 > > previously allocated by thread T0 here: > #0 0x7f3d7a4b4887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145 > sonic-net#1 0x7f3d7a03f0e9 in qmalloc lib/memory.c:101 > sonic-net#2 0x7f3d76cd0166 in bmp_bgp_peer_vrf bgpd/bgp_bmp.c:2194 > sonic-net#3 0x7f3d76cd0166 in bmp_bgp_update_vrf_status bgpd/bgp_bmp.c:2236 > sonic-net#4 0x7f3d76cd29b8 in bmp_vrf_state_changed bgpd/bgp_bmp.c:3479 > sonic-net#5 0x560ae2c45b34 in hook_call_bgp_instance_state bgpd/bgpd.c:88 > sonic-net#6 0x560ae2c4d158 in bgp_instance_up bgpd/bgpd.c:3936 > sonic-net#7 0x560ae29e5ed1 in bgp_vrf_enable bgpd/bgp_main.c:299 > sonic-net#8 0x7f3d7a0ff8b1 in vrf_enable lib/vrf.c:286 > sonic-net#9 0x7f3d7a0ff8b1 in vrf_enable lib/vrf.c:275 > sonic-net#10 0x7f3d7a12ab66 in zclient_vrf_add lib/zclient.c:2561 > sonic-net#11 0x7f3d7a12eb43 in zclient_read lib/zclient.c:4624 > sonic-net#12 0x7f3d7a0f848b in event_call lib/event.c:2019 > sonic-net#13 0x7f3d7a01e627 in frr_run lib/libfrr.c:1232 > sonic-net#14 0x560ae29e0037 in main bgpd/bgp_main.c:555 > sonic-net#15 0x7f3d79a29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
eddieruan-alibaba
pushed a commit
to eddieruan-alibaba/sonic-frr
that referenced
this pull request
Aug 19, 2025
Seen with bfd_vrf_topo1, and bgp_evpn_rt5 on Ubuntu 22.04 hwe. Do not call ns_delete() from zebra_vrf_delete(), which calls zebra_ns_delete(). - If a netns is removed from the system, vrf_delete()->zebra_vrf_delete() is called before calling ns_delete() (see zebra_ns_notify.c). - If zebra is terminating, zebra_ns_final_shutdown() will call zebra_vrf_delete(). > ==616172==ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000ae3a4 at pc 0x556cdc178d8f bp 0x7ffe4f41ace0 sp 0x7ffe4f41acd0 > READ of size 4 at 0x6160000ae3a4 thread T0 > #0 0x556cdc178d8e in ctx_info_from_zns zebra/zebra_dplane.c:3394 > sonic-net#1 0x556cdc178f55 in dplane_ctx_ns_init zebra/zebra_dplane.c:3410 > sonic-net#2 0x556cdc17b829 in dplane_ctx_nexthop_init zebra/zebra_dplane.c:3759 > sonic-net#3 0x556cdc18095f in dplane_nexthop_update_internal zebra/zebra_dplane.c:4566 > sonic-net#4 0x556cdc1813f1 in dplane_nexthop_delete zebra/zebra_dplane.c:4793 > sonic-net#5 0x556cdc229234 in zebra_nhg_uninstall_kernel zebra/zebra_nhg.c:3484 > sonic-net#6 0x556cdc21f8fe in zebra_nhg_decrement_ref zebra/zebra_nhg.c:1804 > sonic-net#7 0x556cdc24b05a in route_entry_update_nhe zebra/zebra_rib.c:456 > sonic-net#8 0x556cdc255083 in rib_re_nhg_free zebra/zebra_rib.c:2633 > sonic-net#9 0x556cdc25e3bb in rib_unlink zebra/zebra_rib.c:4049 > sonic-net#10 0x556cdc24c9b0 in zebra_rtable_node_cleanup zebra/zebra_rib.c:903 > sonic-net#11 0x7fb25c173144 in route_node_free lib/table.c:75 > sonic-net#12 0x7fb25c17337f in route_table_free lib/table.c:111 > sonic-net#13 0x7fb25c172fe4 in route_table_finish lib/table.c:46 > sonic-net#14 0x556cdc266f62 in zebra_router_free_table zebra/zebra_router.c:191 > sonic-net#15 0x556cdc2673ef in zebra_router_terminate zebra/zebra_router.c:243 > sonic-net#16 0x556cdc10638b in zebra_finalize zebra/main.c:240 > sonic-net#17 0x7fb25c18e012 in event_call lib/event.c:2019 > sonic-net#18 0x7fb25c04afc6 in frr_run lib/libfrr.c:1247 > sonic-net#19 0x556cdc106deb in main zebra/main.c:543 > sonic-net#20 0x7fb25ba29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 > sonic-net#21 0x7fb25ba29e3f in __libc_start_main_impl ../csu/libc-start.c:392 > sonic-net#22 0x556cdc0c7ed4 in _start (/usr/lib/frr/zebra+0x192ed4) > > 0x6160000ae3a4 is located 36 bytes inside of 592-byte region [0x6160000ae380,0x6160000ae5d0) > freed by thread T0 here: > #0 0x7fb25c6b4537 in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:127 > sonic-net#1 0x7fb25c0790e3 in qfree lib/memory.c:131 > sonic-net#2 0x556cdc22d9c9 in zebra_ns_delete zebra/zebra_ns.c:261 > sonic-net#3 0x7fb25c0ac400 in ns_delete lib/netns_linux.c:319 > sonic-net#4 0x556cdc28026a in zebra_vrf_delete zebra/zebra_vrf.c:343 > sonic-net#5 0x7fb25c197443 in vrf_delete lib/vrf.c:282 > sonic-net#6 0x7fb25c1987e8 in vrf_terminate_single lib/vrf.c:601 > sonic-net#7 0x7fb25c197a7a in vrf_iterate lib/vrf.c:394 > sonic-net#8 0x7fb25c198834 in vrf_terminate lib/vrf.c:609 > sonic-net#9 0x556cdc106345 in zebra_finalize zebra/main.c:223 > sonic-net#10 0x7fb25c18e012 in event_call lib/event.c:2019 > sonic-net#11 0x7fb25c04afc6 in frr_run lib/libfrr.c:1247 > sonic-net#12 0x556cdc106deb in main zebra/main.c:543 > sonic-net#13 0x7fb25ba29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 > > previously allocated by thread T0 here: > #0 0x7fb25c6b4a57 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154 > sonic-net#1 0x7fb25c078f91 in qcalloc lib/memory.c:106 > sonic-net#2 0x556cdc22d6a1 in zebra_ns_new zebra/zebra_ns.c:231 > sonic-net#3 0x556cdc22e30b in zebra_ns_init zebra/zebra_ns.c:429 > sonic-net#4 0x556cdc106cec in main zebra/main.c:480 > sonic-net#5 0x7fb25ba29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 > > SUMMARY: AddressSanitizer: heap-use-after-free zebra/zebra_dplane.c:3394 in ctx_info_from_zns Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…works
with a pipe or a file redirection