From 6b652fa2c348bcc642868712ff1c360e7f01ea85 Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Wed, 25 Aug 2021 15:53:03 +0800 Subject: [PATCH 1/2] [TD-6343]: taos crash at tscSubquery.c:2447 --- src/client/src/tscSubquery.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index 45bcf4095a..df9360f331 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -2442,7 +2442,11 @@ static void doSendQueryReqs(SSchedMsg* pSchedMsg) { SSqlObj* pSql = pSchedMsg->ahandle; SPair* p = pSchedMsg->msg; - for(int32_t i = p->first; i < p->second; ++i) { + for (int32_t i = p->first; i < p->second; ++i) { + if (i == pSql->subState.numOfSub) { + tfree(p); + return; + } SSqlObj* pSub = pSql->pSubs[i]; SRetrieveSupport* pSupport = pSub->param; @@ -2582,7 +2586,12 @@ int32_t tscHandleMasterSTableQuery(SSqlObj *pSql) { int32_t numOfTasks = (pState->numOfSub + MAX_REQUEST_PER_TASK - 1)/MAX_REQUEST_PER_TASK; assert(numOfTasks >= 1); - int32_t num = (pState->numOfSub/numOfTasks) + 1; + int32_t num; + if (pState->numOfSub / numOfTasks == MAX_REQUEST_PER_TASK) { + num = MAX_REQUEST_PER_TASK; + } else { + num = pState->numOfSub / numOfTasks + 1; + } tscDebug("0x%"PRIx64 " query will be sent by %d threads", pSql->self, numOfTasks); for(int32_t j = 0; j < numOfTasks; ++j) { From 51193750af2d9f4a2a623be108113f6bad5c435b Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Wed, 25 Aug 2021 15:53:03 +0800 Subject: [PATCH 2/2] [TD-6343]: taos crash at tscSubquery.c:2447 --- src/client/src/tscSubquery.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index df9360f331..c2a9d516c2 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -2443,7 +2443,7 @@ static void doSendQueryReqs(SSchedMsg* pSchedMsg) { SPair* p = pSchedMsg->msg; for (int32_t i = p->first; i < p->second; ++i) { - if (i == pSql->subState.numOfSub) { + if (i >= pSql->subState.numOfSub) { tfree(p); return; }