From 91903e2db6802e71141a7309ca66a300c30d5967 Mon Sep 17 00:00:00 2001 From: saksarav-nokia Date: Tue, 6 Feb 2024 12:44:59 -0500 Subject: [PATCH] Fix the Orchagent crash seen during Port channel OC test cases. (#3042) The function addNeighbor adds the remote system neighbor against the remote system port and increment the reference count for remote system port's RIF. However when it adds the nextHop in addNextHop function , it adds it against Inband port with RIF-ID of remote system port, but increases the RIF reference count of Inband port instead of remote system port.When the neighbor is removed in removeNeighbor, it decreases the ref count of remote system port for RIF. But when it removes the nexthop in removeNextHop, it decreases the ref count for remote system port. So if the remote system port has both ipv4 and ipv6 configured, then the ref count is incremented by 2 for remote system port's RIF (ipv4 and ipv4 nbr) and incremented by 2 (ipv4 and ipv6 nexthop) for Inband Port's RIF. But the ref count is decremented 4 times for remote system port's RIF. So sometimes, as soon as the ipv4 or ipv6 is delted, the orchagent tries to delete the remote system port's RIF, but since SAI meta layer has different ref count, it returns failure and orchagent crashes. Signed-off-by: saksarav --- orchagent/neighorch.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orchagent/neighorch.cpp b/orchagent/neighorch.cpp index 47bcca3c32..efbe7ff481 100644 --- a/orchagent/neighorch.cpp +++ b/orchagent/neighorch.cpp @@ -298,7 +298,7 @@ bool NeighOrch::addNextHop(const NextHopKey &nh) next_hop_entry.nh_flags = 0; m_syncdNextHops[nexthop] = next_hop_entry; - m_intfsOrch->increaseRouterIntfsRefCount(nexthop.alias); + m_intfsOrch->increaseRouterIntfsRefCount(nh.alias); if (nexthop.isMplsNextHop()) {