diff --git a/App/lib/core/BuildPipeline.vp b/App/lib/core/BuildPipeline.vp index 4d299c1..491d7ef 100644 --- a/App/lib/core/BuildPipeline.vp +++ b/App/lib/core/BuildPipeline.vp @@ -609,9 +609,12 @@ def run_llc_parallel(tasks: bytes, task_count: int, max_threads: int) -> int: # 注意:list[T](pool, N) 第二参数是 elem_size(元素大小)不是容量! # 此前传 max_threads=16 → 槽间距 16 字节 < Thread 结构体大小,set 时 # 元素重叠覆盖(get 返回混合垃圾),且初始容量仅 8,set(8..15) 越界写 - # 破坏堆 → llc 成功后随机 ACCESS_VIOLATION。改为不传 elem_size(默认 - # T.__sizeof__())+ append 自动扩容(初始 8 → 16 → 32,覆盖最大批量)。 - th_list: list[vthreading.Thread] | t.CPtr = list[vthreading.Thread](_mbuddy) + # 破坏堆 → llc 成功后随机 ACCESS_VIOLATION。 + # 且元素类型必须用 Thread | t.CPtr(指针):list[vthreading.Thread] + # 的 append 存 8 字节(th 指针)但 get 按 Thread 结构体返回槽地址 → + # join 把对象地址当句柄 → WAIT_FAILED 立即返回 alive=0(误报失败)。 + # list[Thread | t.CPtr] 与 list[ast.AST | t.CPtr] 同理,store/load 一致。 + th_list: list[vthreading.Thread | t.CPtr] | t.CPtr = list[vthreading.Thread | t.CPtr](_mbuddy) if th_list is None: VLogger.error("run_llc_parallel: 线程数组分配失败", "PhaseB") return 1