修改换库后出现的崩溃问题,编译脚本修改,进程控制脚本添加调试
This commit is contained in:
@@ -197,14 +197,32 @@ void closeChannel(chnl_usr_t *chnl_usr)
|
||||
ALL_RCB_INFO *all_rcb_info;
|
||||
RCB_INFO *rcb_info;
|
||||
ST_RET ret;
|
||||
if(chnl_usr->net_info->user_info)
|
||||
{
|
||||
//lnk20260617防止复用崩溃
|
||||
/*if(chnl_usr->net_info->user_info)
|
||||
{
|
||||
all_rcb_info = (ALL_RCB_INFO *)chnl_usr->net_info->user_info;
|
||||
all_rcb_info = chnl_usr->all_rcb_info;
|
||||
|
||||
while((rcb_info = (RCB_INFO *)list_get_first(&all_rcb_info->rcb_info_list)) != NULL)
|
||||
rcb_info_destroy (rcb_info);
|
||||
chk_free(all_rcb_info);
|
||||
chnl_usr->net_info->user_info=NULL;
|
||||
}*/
|
||||
if (chnl_usr->all_rcb_info)
|
||||
{
|
||||
all_rcb_info = chnl_usr->all_rcb_info;
|
||||
|
||||
while ((rcb_info = (RCB_INFO *)list_get_first(&all_rcb_info->rcb_info_list)) != NULL) {
|
||||
rcb_info_destroy(rcb_info);
|
||||
}
|
||||
|
||||
chk_free(all_rcb_info);
|
||||
chnl_usr->all_rcb_info = NULL;
|
||||
}
|
||||
|
||||
chnl_usr->net_info->user_info = NULL;
|
||||
|
||||
//lnk20260617防止复用崩溃
|
||||
chnl_usr->net_info->rem_vmd = NULL;
|
||||
echo_warn("---------start disconnectFromServer!\n");
|
||||
ret = mms_disconnectFromServer(chnl_usr->net_info,&chnl_usr->m_reqCtrl);
|
||||
@@ -219,6 +237,9 @@ void closeChannel(chnl_usr_t *chnl_usr)
|
||||
|
||||
mvl_free_req_ctrl(chnl_usr->m_reqCtrl);
|
||||
|
||||
//lnk20260617防止复用崩溃
|
||||
chnl_usr->all_rcb_info = NULL;
|
||||
|
||||
chnl_usr->net_info->user_info = NULL;
|
||||
chnl_usr->net_info = NULL;
|
||||
|
||||
@@ -1729,7 +1750,9 @@ void CheckNextNotConnectedChannel()
|
||||
echo_warn("chnl_usr->net_info->user_info is not NULL\n");
|
||||
}
|
||||
|
||||
chnl_usr->net_info->user_info = all_rcb_info;
|
||||
//lnk20260617防止复用崩溃
|
||||
//chnl_usr->net_info->user_info = all_rcb_info;
|
||||
|
||||
chnl_usr->chnl->ied->status = STATUS_NORMAL;
|
||||
chnl_usr->chnl->status = STATUS_NORMAL;
|
||||
|
||||
|
||||
@@ -1228,8 +1228,30 @@ ST_VOID u_iec_rpt_ind_data(MVL_VAR_ASSOC** info_va,
|
||||
log_var_data(info_va[va_num], &mms_dec_data);
|
||||
//assert(add_mms_dec_data== (uint32_t)&mms_dec_data);
|
||||
rptinfo = find_rptinfo_from_net_rcb_info(net_info, rcb_info);
|
||||
|
||||
if (rptinfo == NULL) {
|
||||
chnl_usr_t* chnl_usr_tmp = net_info ? (chnl_usr_t*)net_info->user_info : NULL;
|
||||
|
||||
printf("[RPT][ERROR] cannot find rptinfo, net_info=%p user_info=%p rcb_info=%p RptID=%s\n",
|
||||
(void*)net_info,
|
||||
net_info ? (void*)net_info->user_info : NULL,
|
||||
(void*)rcb_info,
|
||||
(rcb_info && rcb_info->RptID) ? rcb_info->RptID : "NULL");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//rptinfo->m_LastDataTime = sGetMsTime();//WW 2023-08-29 去除
|
||||
LD_info = rptinfo->LD_info;
|
||||
|
||||
if (LD_info == NULL) {
|
||||
printf("[RPT][ERROR] rptinfo->LD_info NULL, rptinfo=%p RptID=%s\n",
|
||||
(void*)rptinfo,
|
||||
(rcb_info && rcb_info->RptID) ? rcb_info->RptID : "NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
chnl_usr = net_info->user_info;
|
||||
ied = chnl_usr->chnl->ied;
|
||||
|
||||
@@ -2009,7 +2031,13 @@ ST_RET u_iec_rpt_ind(MVL_COMM_EVENT* event)
|
||||
}
|
||||
|
||||
/* Get "all_rcb_info" from "user_info". User must set "user_info" when conn established.*/
|
||||
all_rcb_info = (ALL_RCB_INFO*)event->net_info->user_info;
|
||||
//lnk20260617防止复用崩溃
|
||||
//all_rcb_info = (ALL_RCB_INFO*)event->net_info->user_info;
|
||||
chnl_usr_t *chnl_usr = (chnl_usr_t*)event->net_info->user_info;
|
||||
if (chnl_usr == NULL || chnl_usr->all_rcb_info == NULL) {
|
||||
return;
|
||||
}
|
||||
all_rcb_info = chnl_usr->all_rcb_info;
|
||||
|
||||
/* Check "all_rcb_info" to see if any RCB has been enabled. */
|
||||
if (all_rcb_info == NULL || all_rcb_info->rcb_info_list == NULL)
|
||||
|
||||
@@ -860,8 +860,24 @@ ST_UCHAR TrgOps [1]; /* 8 bit bitstring */
|
||||
|
||||
if(ret == SD_SUCCESS)
|
||||
{
|
||||
list_add_last(&((ALL_RCB_INFO *)clientNetInfo->user_info)->rcb_info_list, rcb_info); /* add RCB to list*/
|
||||
}
|
||||
//lnk20260617防止复用崩溃
|
||||
//list_add_last(&((ALL_RCB_INFO *)clientNetInfo->user_info)->rcb_info_list, rcb_info); /* add RCB to list*/
|
||||
chnl_usr_t *chnl_usr = (chnl_usr_t *)clientNetInfo->user_info;
|
||||
|
||||
if (chnl_usr == NULL || chnl_usr->all_rcb_info == NULL) {
|
||||
printf("[RPT_REGISTER][ERROR] invalid user_info=%p all_rcb_info=%p dom=%s rcb=%s\n",
|
||||
clientNetInfo ? clientNetInfo->user_info : NULL,
|
||||
chnl_usr ? chnl_usr->all_rcb_info : NULL,
|
||||
dom_name ? dom_name : "NULL",
|
||||
rcb_name ? rcb_name : "NULL");
|
||||
|
||||
rcb_info_destroy(rcb_info);
|
||||
rcb_info = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
list_add_last(&chnl_usr->all_rcb_info->rcb_info_list, rcb_info);
|
||||
}
|
||||
else{
|
||||
rcb_info_destroy(rcb_info);
|
||||
rcb_info = NULL;
|
||||
|
||||
@@ -375,6 +375,8 @@ struct chnl_usr_t{
|
||||
double m_ClosedMsTime; //上次通道关闭时间
|
||||
double m_LastPosRespTime; //上次肯定响应的时间
|
||||
int m_NegRespTimes; // 累计否定响应次数
|
||||
|
||||
ALL_RCB_INFO *all_rcb_info;//lnk20260617防止复用崩溃
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -232,9 +232,20 @@ rptinfo_t* find_rptinfo_from_net_rcb_info(MVL_NET_INFO *net_info,RCB_INFO *rcb_i
|
||||
rptinfo_t *rptinfo = NULL;
|
||||
int cpuno,rpt_no;
|
||||
|
||||
chnl_usr = net_info->user_info;
|
||||
if (net_info == NULL || rcb_info == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
chnl_usr = (chnl_usr_t*)net_info->user_info;
|
||||
if (chnl_usr == NULL || chnl_usr->chnl == NULL || chnl_usr->chnl->ied == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ied = chnl_usr->chnl->ied;
|
||||
ied_usr = GET_IEDEXT_ADDR(ied);
|
||||
if (ied_usr == NULL || ied_usr->LD_info == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for(cpuno=0 ; cpuno<ied->cpucount; cpuno++) {
|
||||
LD_info = &(ied_usr->LD_info[cpuno]);
|
||||
|
||||
Reference in New Issue
Block a user