Skip to content

Commit fabe040

Browse files
WWeiOnegallomassimo
authored andcommitted
[Fix] Double free (aliyun#133)
* [Fix] network_frontend ns3 integer overflow * [Fix] double free
1 parent ec03210 commit fabe040

3 files changed

Lines changed: 14 additions & 14 deletions

File tree

‎astra-sim-alibabacloud/astra-sim/network_frontend/ns3/AstraSimNetwork.cc‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class ASTRASimNetwork : public AstraSim::AstraNetworkAPI {
150150
AstraSim::RecvPacketEventHadndlerData* ehd = (AstraSim::RecvPacketEventHadndlerData*) t.fun_arg;
151151
AstraSim::EventType event = ehd->event;
152152
tag = ehd->flowTag.tag_id;
153-
NcclLog->writeLog(NcclLogLevel::DEBUG,"接收事件注册 src %d sim_recv on rank %d tag_id %d channdl id %d",src,rank,tag,ehd->flowTag.channel_id);
153+
NcclLog->writeLog(NcclLogLevel::DEBUG,"[Receive event registration] src %d sim_recv on rank %d tag_id %d channdl id %d",src,rank,tag,ehd->flowTag.channel_id);
154154

155155
if (recvHash.find(make_pair(tag, make_pair(t.src, t.dest))) !=
156156
recvHash.end()) {
@@ -190,12 +190,12 @@ class ASTRASimNetwork : public AstraSim::AstraNetworkAPI {
190190
if (expeRecvHash.find(make_pair(tag, make_pair(t.src, t.dest))) ==
191191
expeRecvHash.end()) {
192192
expeRecvHash[make_pair(tag, make_pair(t.src, t.dest))] = t;
193-
NcclLog->writeLog(NcclLogLevel::DEBUG," 网络包后到,先进行注册 recvHash do not find expeRecvHash.new make src %d dest %d t.count: %d channel_id %d current_flow_id %d",t.src,t.dest,t.count,tag,flowTag.current_flow_id);
193+
NcclLog->writeLog(NcclLogLevel::DEBUG," [Packet arrived late, registering first] recvHash do not find expeRecvHash.new make src %d dest %d t.count: %llu channel_id %d current_flow_id %d",t.src,t.dest,t.count,tag,flowTag.current_flow_id);
194194

195195
} else {
196196
uint64_t expecount =
197197
expeRecvHash[make_pair(tag, make_pair(t.src, t.dest))].count;
198-
NcclLog->writeLog(NcclLogLevel::DEBUG," 网络包后到,重复注册 recvHash do not find expeRecvHash.add make src %d dest %d expecount: %d t.count: %d tag_id %d current_flow_id %d",t.src,t.dest,expecount,t.count,tag,flowTag.current_flow_id);
198+
NcclLog->writeLog(NcclLogLevel::DEBUG," [Packet arrived late, re-registering] recvHash do not find expeRecvHash.add make src %d dest %d expecount: %d t.count: %d tag_id %d current_flow_id %d",t.src,t.dest,expecount,t.count,tag,flowTag.current_flow_id);
199199

200200
}
201201
}

‎astra-sim-alibabacloud/astra-sim/network_frontend/ns3/entry.h‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ struct task1 {
6565
double schTime;
6666
};
6767
map<std::pair<int, std::pair<int, int>>, struct task1> expeRecvHash;
68-
map<std::pair<int, std::pair<int, int>>, int> recvHash;
68+
map<std::pair<int, std::pair<int, int>>, uint64_t> recvHash;
6969
map<std::pair<int, std::pair<int, int>>, struct task1> sentHash;
7070
map<std::pair<int, int>, int64_t> nodeHash;
7171
map<std::pair<int,std::pair<int,int>>,int> waiting_to_sent_callback;
@@ -139,8 +139,8 @@ void SendFlow(int src, int dst, uint64_t maxPacketCount,
139139
flow_input.idx++;
140140
if(real_PacketCount == 0) real_PacketCount = 1;
141141
MockNcclLog* NcclLog = MockNcclLog::getInstance();
142-
NcclLog->writeLog(NcclLogLevel::DEBUG," 发包事件 %dSendFlow to %d channelid: %d flow_id %d srcip %d dstip %d size: %d at the tick: %d",src,dst,tag,flow_id,serverAddress[src],serverAddress[dst],maxPacketCount,AstraSim::Sys::boostedTick());
143-
NcclLog->writeLog(NcclLogLevel::DEBUG," request->flowTag 发包事件 %dSendFlow to %d tag_id: %d flow_id %d srcip %d dstip %d size: %d at the tick: %d",request->flowTag.sender_node,request->flowTag.receiver_node,request->flowTag.tag_id,request->flowTag.current_flow_id,serverAddress[src],serverAddress[dst],maxPacketCount,AstraSim::Sys::boostedTick());
142+
NcclLog->writeLog(NcclLogLevel::DEBUG," [Packet sending event] %dSendFlow to %d channelid: %d flow_id %d srcip %d dstip %d size: %llu at the tick: %d",src,dst,tag,flow_id,serverAddress[src],serverAddress[dst],maxPacketCount,AstraSim::Sys::boostedTick());
143+
NcclLog->writeLog(NcclLogLevel::DEBUG," request->flowTag [Packet sending event] %dSendFlow to %d tag_id: %d flow_id %d srcip %d dstip %d size: %llu at the tick: %d",request->flowTag.sender_node,request->flowTag.receiver_node,request->flowTag.tag_id,request->flowTag.current_flow_id,serverAddress[src],serverAddress[dst],maxPacketCount,AstraSim::Sys::boostedTick());
144144
RdmaClientHelper clientHelper(
145145
pg, serverAddress[src], serverAddress[dst], port, dport, real_PacketCount,
146146
has_win ? (global_t == 1 ? maxBdp : pairBdp[n.Get(src)][n.Get(dst)]) : 0,
@@ -170,17 +170,17 @@ void notify_receiver_receive_data(int sender_node, int receiver_node,
170170
MtpInterface::explicitCriticalSection cs;
171171
#endif
172172
MockNcclLog* NcclLog = MockNcclLog::getInstance();
173-
NcclLog->writeLog(NcclLogLevel::DEBUG," %d notify recevier: %d message size: %d",sender_node,receiver_node,message_size);
173+
NcclLog->writeLog(NcclLogLevel::DEBUG," %d notify recevier: %d message size: %llu",sender_node,receiver_node,message_size);
174174
int tag = flowTag.tag_id;
175175
if (expeRecvHash.find(make_pair(
176176
tag, make_pair(sender_node, receiver_node))) != expeRecvHash.end()) {
177177
task1 t2 =
178178
expeRecvHash[make_pair(tag, make_pair(sender_node, receiver_node))];
179179
MockNcclLog* NcclLog = MockNcclLog::getInstance();
180-
NcclLog->writeLog(NcclLogLevel::DEBUG," %d notify recevier: %d message size: %d t2.count: %d channle id: %d",sender_node,receiver_node,message_size,t2.count,flowTag.channel_id);
180+
NcclLog->writeLog(NcclLogLevel::DEBUG," %d notify recevier: %d message size: %llu t2.count: %llu channle id: %d",sender_node,receiver_node,message_size,t2.count,flowTag.channel_id);
181181
AstraSim::RecvPacketEventHadndlerData* ehd = (AstraSim::RecvPacketEventHadndlerData*) t2.fun_arg;
182182
if (message_size == t2.count) {
183-
NcclLog->writeLog(NcclLogLevel::DEBUG," message_size = t2.count expeRecvHash.erase %d notify recevier: %d message size: %d channel_id %d",sender_node,receiver_node,message_size,tag);
183+
NcclLog->writeLog(NcclLogLevel::DEBUG," message_size = t2.count expeRecvHash.erase %d notify recevier: %d message size: %llu channel_id %d",sender_node,receiver_node,message_size,tag);
184184
expeRecvHash.erase(make_pair(tag, make_pair(sender_node, receiver_node)));
185185
#ifdef NS3_MTP
186186
cs.ExitSection();
@@ -192,7 +192,7 @@ void notify_receiver_receive_data(int sender_node, int receiver_node,
192192
} else if (message_size > t2.count) {
193193
recvHash[make_pair(tag, make_pair(sender_node, receiver_node))] =
194194
message_size - t2.count;
195-
NcclLog->writeLog(NcclLogLevel::DEBUG,"message_size > t2.count expeRecvHash.erase %d notify recevier: %d message size: %d channel_id %d",sender_node,receiver_node,message_size,tag);
195+
NcclLog->writeLog(NcclLogLevel::DEBUG,"message_size > t2.count expeRecvHash.erase %d notify recevier: %d message size: %llu channel_id %d",sender_node,receiver_node,message_size,tag);
196196
expeRecvHash.erase(make_pair(tag, make_pair(sender_node, receiver_node)));
197197
#ifdef NS3_MTP
198198
cs.ExitSection();
@@ -320,7 +320,7 @@ void qp_finish(FILE *fout, Ptr<RdmaQueuePair> q) {
320320
Ptr<RdmaDriver> rdma = dstNode->GetObject<RdmaDriver>();
321321
rdma->m_rdma->DeleteRxQp(q->sip.Get(), q->m_pg, q->sport);
322322
MockNcclLog* NcclLog = MockNcclLog::getInstance();
323-
NcclLog->writeLog(NcclLogLevel::DEBUG,"qp finish, src: %d did: %d port: %d total bytes: %d at the tick: %d",sid,did,q->sport,q->m_size,AstraSim::Sys::boostedTick());
323+
NcclLog->writeLog(NcclLogLevel::DEBUG,"qp finish, src: %d did: %d port: %d total bytes: %llu at the tick: %d",sid,did,q->sport,q->m_size,AstraSim::Sys::boostedTick());
324324
if (sender_src_port_map.find(make_pair(q->sport, make_pair(sid, did))) ==
325325
sender_src_port_map.end()) {
326326
NcclLog->writeLog(NcclLogLevel::ERROR,"could not find the tag, there must be something wrong");
@@ -348,8 +348,8 @@ void send_finish(FILE *fout, Ptr<RdmaQueuePair> q) {
348348
uint32_t sid = ip_to_node_id(q->sip), did = ip_to_node_id(q->dip);
349349
AstraSim::ncclFlowTag flowTag;
350350
MockNcclLog* NcclLog = MockNcclLog::getInstance();
351-
NcclLog->writeLog(NcclLogLevel::DEBUG,"数据包出发送网卡 send finish, src: %d did: %d port: %d srcip %d dstip %d total bytes: %d at the tick: %d",sid,did,q->sport,q->sip,q->dip,q->m_size,AstraSim::Sys::boostedTick());
352-
int all_sent_chunksize;
351+
NcclLog->writeLog(NcclLogLevel::DEBUG,"[Packet sent from NIC] send finish, src: %d did: %d port: %d srcip %d dstip %d total bytes: %llu at the tick: %d",sid,did,q->sport,q->sip,q->dip,q->m_size,AstraSim::Sys::boostedTick());
352+
uint64_t all_sent_chunksize;
353353
{
354354
#ifdef NS3_MTP
355355
MtpInterface::explicitCriticalSection cs;

‎astra-sim-alibabacloud/astra-sim/system/MockNcclGroup.cc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2022,7 +2022,7 @@ namespace MockNccl {
20222022
q.push(current->right);
20232023
}
20242024
}
2025-
return node2treenode[(nodes[rank2index[root->node]+1]) % nodes.size()];
2025+
return node2treenode[nodes[(rank2index[root->node] + 1) % nodes.size()]];
20262026
}
20272027

20282028
ncclInfo* MockNcclGroup::get_algo_proto_info(

0 commit comments

Comments
 (0)