fix: fix memory double free issue
This commit is contained in:
parent
0405c4fbcc
commit
020a656063
|
@ -286,6 +286,7 @@ static int32_t hbAsyncCallBack(void *param, SDataBuf *pMsg, int32_t code) {
|
||||||
if (pInst == NULL || NULL == *pInst) {
|
if (pInst == NULL || NULL == *pInst) {
|
||||||
taosThreadMutexUnlock(&appInfo.mutex);
|
taosThreadMutexUnlock(&appInfo.mutex);
|
||||||
tscError("cluster not exist, key:%s", key);
|
tscError("cluster not exist, key:%s", key);
|
||||||
|
taosMemoryFree(pMsg->pData);
|
||||||
tFreeClientHbBatchRsp(&pRsp);
|
tFreeClientHbBatchRsp(&pRsp);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1007,7 +1007,7 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) {
|
||||||
taosMemoryFree(pParam);
|
taosMemoryFree(pParam);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
tscWarn("msg discard from vgId:%d, epoch %d, code:%x", vgId, epoch, code);
|
tscWarn("msg discard from vgId:%d, epoch %d, code:%x", vgId, epoch, code);
|
||||||
if (pMsg->pData) taosMemoryFree(pMsg->pData);
|
if (pMsg->pData) taosMemoryFreeClear(pMsg->pData);
|
||||||
if (code == TSDB_CODE_TQ_NO_COMMITTED_OFFSET) {
|
if (code == TSDB_CODE_TQ_NO_COMMITTED_OFFSET) {
|
||||||
SMqPollRspWrapper* pRspWrapper = taosAllocateQitem(sizeof(SMqPollRspWrapper), DEF_QITEM);
|
SMqPollRspWrapper* pRspWrapper = taosAllocateQitem(sizeof(SMqPollRspWrapper), DEF_QITEM);
|
||||||
if (pRspWrapper == NULL) {
|
if (pRspWrapper == NULL) {
|
||||||
|
|
|
@ -467,6 +467,7 @@ int32_t ctgAddBatch(SCatalog* pCtg, int32_t vgId, SRequestConnInfo* pConn, SCtgT
|
||||||
if (NULL == taosArrayPush(newBatch.pMsgs, &req)) {
|
if (NULL == taosArrayPush(newBatch.pMsgs, &req)) {
|
||||||
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
msg = NULL;
|
||||||
if (NULL == taosArrayPush(newBatch.pTaskIds, &pTask->taskId)) {
|
if (NULL == taosArrayPush(newBatch.pTaskIds, &pTask->taskId)) {
|
||||||
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
@ -517,6 +518,7 @@ int32_t ctgAddBatch(SCatalog* pCtg, int32_t vgId, SRequestConnInfo* pConn, SCtgT
|
||||||
if (NULL == taosArrayPush(pBatch->pMsgs, &req)) {
|
if (NULL == taosArrayPush(pBatch->pMsgs, &req)) {
|
||||||
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
msg = NULL;
|
||||||
if (NULL == taosArrayPush(pBatch->pTaskIds, &pTask->taskId)) {
|
if (NULL == taosArrayPush(pBatch->pTaskIds, &pTask->taskId)) {
|
||||||
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
CTG_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
@ -545,7 +547,7 @@ int32_t ctgAddBatch(SCatalog* pCtg, int32_t vgId, SRequestConnInfo* pConn, SCtgT
|
||||||
CTG_ERR_JRET(TSDB_CODE_APP_ERROR);
|
CTG_ERR_JRET(TSDB_CODE_APP_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
tNameGetFullDbName(pName, newBatch.dbFName);
|
tNameGetFullDbName(pName, pBatch->dbFName);
|
||||||
}
|
}
|
||||||
|
|
||||||
ctgDebug("task %d %s req added to batch %d, target vgId %d", pTask->taskId, TMSG_INFO(msgType), pBatch->batchId,
|
ctgDebug("task %d %s req added to batch %d, target vgId %d", pTask->taskId, TMSG_INFO(msgType), pBatch->batchId,
|
||||||
|
|
|
@ -438,6 +438,14 @@ void ctgFreeMsgCtx(SCtgMsgCtx* pCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ctgFreeTbMetasMsgCtx(SCtgMsgCtx* pCtx) {
|
||||||
|
ctgFreeMsgCtx(pCtx);
|
||||||
|
if (pCtx->lastOut) {
|
||||||
|
ctgFreeSTableMetaOutput((STableMetaOutput*)pCtx->lastOut);
|
||||||
|
pCtx->lastOut = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ctgFreeSTableMetaOutput(STableMetaOutput* pOutput) {
|
void ctgFreeSTableMetaOutput(STableMetaOutput* pOutput) {
|
||||||
if (NULL == pOutput) {
|
if (NULL == pOutput) {
|
||||||
return;
|
return;
|
||||||
|
@ -641,7 +649,7 @@ void ctgFreeTaskCtx(SCtgTask* pTask) {
|
||||||
taosArrayDestroy(taskCtx->pFetchs);
|
taosArrayDestroy(taskCtx->pFetchs);
|
||||||
// NO NEED TO FREE pNames
|
// NO NEED TO FREE pNames
|
||||||
|
|
||||||
taosArrayDestroyEx(pTask->msgCtxs, (FDelete)ctgFreeMsgCtx);
|
taosArrayDestroyEx(pTask->msgCtxs, (FDelete)ctgFreeTbMetasMsgCtx);
|
||||||
|
|
||||||
if (pTask->msgCtx.lastOut) {
|
if (pTask->msgCtx.lastOut) {
|
||||||
ctgFreeSTableMetaOutput((STableMetaOutput*)pTask->msgCtx.lastOut);
|
ctgFreeSTableMetaOutput((STableMetaOutput*)pTask->msgCtx.lastOut);
|
||||||
|
|
Loading…
Reference in New Issue