From 24947937a4e48cf91d79eb889e1a6d6c30cbc2ef Mon Sep 17 00:00:00 2001 From: Bruno Donassolo Date: Tue, 27 Apr 2021 17:27:03 +0200 Subject: [PATCH 1/1] Fix FatTreeZone with limiter links Are we sure we want this "feature" in complex clusters? As for Torus, no test using it. Segfault when communicating with limiter links. Routers inside the FatTreeZone don't have limiters, even when user sets the limiter on the XML. Code was adding nullptr to the list of links in this case, generating a segfault in communicate function. Example: --- src/kernel/routing/FatTreeZone.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kernel/routing/FatTreeZone.cpp b/src/kernel/routing/FatTreeZone.cpp index c6c27ea36d..e68caae8b5 100644 --- a/src/kernel/routing/FatTreeZone.cpp +++ b/src/kernel/routing/FatTreeZone.cpp @@ -93,7 +93,7 @@ void FatTreeZone::get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArg if (latency) *latency += currentNode->parents[d]->up_link_->get_latency(); - if (has_limiter()) + if (currentNode->limiter_link_) into->link_list.push_back(currentNode->limiter_link_); currentNode = currentNode->parents[d]->up_node_; } @@ -109,7 +109,7 @@ void FatTreeZone::get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArg if (latency) *latency += currentNode->children[i]->down_link_->get_latency(); currentNode = currentNode->children[i]->down_node_; - if (has_limiter()) + if (currentNode->limiter_link_) into->link_list.push_back(currentNode->limiter_link_); XBT_DEBUG("%d(%u,%u) is accessible through %d(%u,%u)", destination->id, destination->level, destination->position, currentNode->id, currentNode->level, currentNode->position); -- 2.20.1