From 5ea46f210c429c90ab560da089a9ed33934ff523 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Sun, 18 Feb 2024 14:37:01 +0800 Subject: [PATCH] [pipelineX](bug) Fix use-after-free when BE exits (#31042) --- be/src/runtime/exec_env_init.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/be/src/runtime/exec_env_init.cpp b/be/src/runtime/exec_env_init.cpp index 511f326a44..c7278af9be 100644 --- a/be/src/runtime/exec_env_init.cpp +++ b/be/src/runtime/exec_env_init.cpp @@ -599,7 +599,6 @@ void ExecEnv::destroy() { SAFE_DELETE(_fragment_mgr); SAFE_DELETE(_workload_sched_mgr); SAFE_DELETE(_task_group_manager); - SAFE_DELETE(_without_group_task_scheduler); SAFE_DELETE(_file_cache_factory); SAFE_DELETE(_runtime_filter_timer_queue); // TODO(zhiqiang): Maybe we should call shutdown before release thread pool? @@ -636,6 +635,9 @@ void ExecEnv::destroy() { // so it should be created before all query begin and deleted after all query and daemon thread stoppped SAFE_DELETE(_runtime_query_statistics_mgr); + // We should free task scheduler finally because task queue / scheduler maybe used by pipelineX. + SAFE_DELETE(_without_group_task_scheduler); + LOG(INFO) << "Doris exec envorinment is destoried."; }