未验证 提交 d8e6fe25 编写于 作者: S Shengliang Guan 提交者: GitHub

Merge pull request #16676 from taosdata/szhou/fixbugs

fix: invalid read after tearing down udfs and then closing uv pipe
...@@ -1183,7 +1183,9 @@ void onUdfcPipeClose(uv_handle_t *handle) { ...@@ -1183,7 +1183,9 @@ void onUdfcPipeClose(uv_handle_t *handle) {
QUEUE_REMOVE(&task->procTaskQueue); QUEUE_REMOVE(&task->procTaskQueue);
uv_sem_post(&task->taskSem); uv_sem_post(&task->taskSem);
} }
conn->session->udfUvPipe = NULL; if (conn->session != NULL) {
conn->session->udfUvPipe = NULL;
}
taosMemoryFree(conn->readBuf.buf); taosMemoryFree(conn->readBuf.buf);
taosMemoryFree(conn); taosMemoryFree(conn);
taosMemoryFree((uv_pipe_t *) handle); taosMemoryFree((uv_pipe_t *) handle);
...@@ -1821,7 +1823,10 @@ int32_t doTeardownUdf(UdfcFuncHandle handle) { ...@@ -1821,7 +1823,10 @@ int32_t doTeardownUdf(UdfcFuncHandle handle) {
udfcRunUdfUvTask(task, UV_TASK_DISCONNECT); udfcRunUdfUvTask(task, UV_TASK_DISCONNECT);
fnInfo("tear down udf. udf name: %s, udf func handle: %p", session->udfName, handle); fnInfo("tear down udf. udf name: %s, udf func handle: %p", session->udfName, handle);
if (session->udfUvPipe != NULL && session->udfUvPipe->data != NULL) {
SClientUvConn *conn = session->udfUvPipe->data;
conn->session = NULL;
}
taosMemoryFree(session); taosMemoryFree(session);
taosMemoryFree(task); taosMemoryFree(task);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册