From 2fb3de1a7352b66d7fde8671e12393934c1b79f0 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Wed, 8 Jun 2022 20:18:29 +0800 Subject: [PATCH] fix(client): pSql->subStates maybe free by recreate --- src/client/src/tscProfile.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/client/src/tscProfile.c b/src/client/src/tscProfile.c index bfc3b9f0be..d2fdc2fc93 100644 --- a/src/client/src/tscProfile.c +++ b/src/client/src/tscProfile.c @@ -283,6 +283,17 @@ int tscBuildQueryStreamDesc(void *pMsg, STscObj *pObj) { pthread_mutex_lock(&pSql->subState.mutex); if (pSql->pSubs != NULL && pSql->subState.states != NULL) { for (int32_t i = 0; i < pQdesc->numOfSub; ++i) { + // because subState maybe free on anytime by any thread, check validate from here + if(pSql->subState.numOfSub != pQdesc->numOfSub || + pSql->pSubs == NULL || + pSql->subState.states == NULL) { + tscError(" QUERY-HEART STscObj=%p subState maybe free. numOfSub=%d pSubs=%p states=%p", + pObj, pSql->subState.numOfSub, pSql->pSubs, pSql->subState.states); + pQdesc->numOfSub = 0; + // break for + break; + } + SSqlObj *psub = pSql->pSubs[i]; int64_t self = (psub != NULL)? psub->self : 0; -- GitLab