diff --git a/be/src/pipeline/pipeline_x/pipeline_x_task.h b/be/src/pipeline/pipeline_x/pipeline_x_task.h index 1f3dd9c3b71f5f..03bafd479924a6 100644 --- a/be/src/pipeline/pipeline_x/pipeline_x_task.h +++ b/be/src/pipeline/pipeline_x/pipeline_x_task.h @@ -139,6 +139,9 @@ class PipelineXTask : public PipelineTask { int task_id() const { return _index; }; void clear_blocking_state() { + // Another thread may call finalize to release all dependencies + // And then it will core. + std::unique_lock lc(_release_lock); if (!_finished && get_state() != PipelineTaskState::PENDING_FINISH && _blocked_dep) { _blocked_dep->set_ready(); _blocked_dep = nullptr;