diff --git a/App/lib/core/BuildPipeline.vp b/App/lib/core/BuildPipeline.vp index 84bbf92..ce6d5e2 100644 --- a/App/lib/core/BuildPipeline.vp +++ b/App/lib/core/BuildPipeline.vp @@ -490,16 +490,19 @@ def init_llc_task(task: LlcTask | t.CPtr, ir_path: str, output_dir: str, def free_llc_task(task: LlcTask | t.CPtr): - """释放任务(命令串 + 记录)""" + """释放任务的命令串;记录本身是任务数组的连续槽(非独立 malloc), + 由调用方对数组整体 stdlib.free(此前对槽 free 导致 double-free)""" if task is None: return if task.OptCmd is not None: stdlib.free(task.OptCmd) + task.OptCmd = None if task.LlcCmd is not None: stdlib.free(task.LlcCmd) + task.LlcCmd = None if task.ModuleSha1 is not None: stdlib.free(task.ModuleSha1) - stdlib.free(task) + task.ModuleSha1 = None def _llc_task_worker(arg: t.CPtr) -> t.CPtr: