From c69746e85e72896251a6aaa033faa676bfe5f075 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Fri, 16 Sep 2022 10:13:34 +0800 Subject: [PATCH 1/2] fix: add debug info --- source/libs/qworker/src/qwUtil.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/libs/qworker/src/qwUtil.c b/source/libs/qworker/src/qwUtil.c index c7bf7ab7e7..34f638b774 100644 --- a/source/libs/qworker/src/qwUtil.c +++ b/source/libs/qworker/src/qwUtil.c @@ -275,6 +275,7 @@ void qwFreeTaskHandle(qTaskInfo_t *taskHandle) { qTaskInfo_t otaskHandle = atomic_load_ptr(taskHandle); if (otaskHandle && atomic_val_compare_exchange_ptr(taskHandle, otaskHandle, NULL)) { qDestroyTask(otaskHandle); + qDebug("task handle destryed"); } } @@ -305,6 +306,7 @@ void qwFreeTaskCtx(SQWTaskCtx *ctx) { if (ctx->sinkHandle) { dsDestroyDataSinker(ctx->sinkHandle); ctx->sinkHandle = NULL; + qDebug("sink handle destryed"); } } @@ -453,6 +455,8 @@ void qwDestroySchStatus(SQWSchStatus *pStatus) { taosHashCleanup(pStatus->tasksH void qwDestroyImpl(void *pMgmt) { SQWorker *mgmt = (SQWorker *)pMgmt; + qDebug("start to destroy qworker, type:%d, id:%d, handle:%p", mgmt->nodeType, mgmt->nodeId, mgmt); + taosTmrStop(mgmt->hbTimer); mgmt->hbTimer = NULL; taosTmrCleanUp(mgmt->timer); @@ -484,6 +488,8 @@ void qwDestroyImpl(void *pMgmt) { atomic_sub_fetch_32(&gQwMgmt.qwNum, 1); qwCloseRef(); + + qDebug("qworker destroyed, type:%d, id:%d, handle:%p", mgmt->nodeType, mgmt->nodeId, mgmt); } int32_t qwOpenRef(void) { From 142067b05f06bb53b18b9be6170574a7123e97eb Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Fri, 16 Sep 2022 16:40:17 +0800 Subject: [PATCH 2/2] fix: fix invalid read issue --- source/libs/qworker/src/qwUtil.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/libs/qworker/src/qwUtil.c b/source/libs/qworker/src/qwUtil.c index 34f638b774..581eea4a81 100644 --- a/source/libs/qworker/src/qwUtil.c +++ b/source/libs/qworker/src/qwUtil.c @@ -454,8 +454,10 @@ void qwDestroySchStatus(SQWSchStatus *pStatus) { taosHashCleanup(pStatus->tasksH void qwDestroyImpl(void *pMgmt) { SQWorker *mgmt = (SQWorker *)pMgmt; - - qDebug("start to destroy qworker, type:%d, id:%d, handle:%p", mgmt->nodeType, mgmt->nodeId, mgmt); + int8_t nodeType = mgmt->nodeType; + int32_t nodeId = mgmt->nodeId; + + qDebug("start to destroy qworker, type:%d, id:%d, handle:%p", nodeType, nodeId, mgmt); taosTmrStop(mgmt->hbTimer); mgmt->hbTimer = NULL; @@ -489,7 +491,7 @@ void qwDestroyImpl(void *pMgmt) { qwCloseRef(); - qDebug("qworker destroyed, type:%d, id:%d, handle:%p", mgmt->nodeType, mgmt->nodeId, mgmt); + qDebug("qworker destroyed, type:%d, id:%d, handle:%p", nodeType, nodeId, mgmt); } int32_t qwOpenRef(void) {