debug(traceback): worker stderr 输出并按 fail-fast 注入 main

并行 worker 的 _vlog 不汇总;改为 stderr 直接输出 enabled/InstallSymbol;main 找不到 Install 时明确报错。
This commit is contained in:
TermiNexus committed 2026-10-19 18:31:45 +08:00
1 parent 2051c2237e
commit 2beb5d724f
2 files changed
+11 -4

No files matched your search

+6 -3
View File
@@ -2373,11 +2373,14 @@ class Phase2Translator:
if 'traceback' in str(_p):
_tb_sha1 = _k
break
trans.translator.TracebackEnabled = self.traceback_enabled
if _tb_sha1 is not None:
trans.translator.TracebackInstallSymbol = f'{_tb_sha1}.Install'
_vlog().info(
f"[traceback] InstallSymbol={getattr(trans.translator, 'TracebackInstallSymbol', None)}"
f" file={os.path.basename(src_path)}")
sys.stderr.write(
f"[traceback] file={os.path.basename(src_path)} "
f"enabled={self.traceback_enabled} "
f"InstallSymbol={getattr(trans.translator, 'TracebackInstallSymbol', None)}\n")
sys.stderr.flush()
trans.SliceLevel = self.slice_level
trans.translator.SliceLevel = self.slice_level
trans.translator.SliceCount = 0
+5 -1
View File
@@ -2054,12 +2054,16 @@ class FunctionHandle(BaseHandle):
func_body = func_body[1:]
else:
Gen._create_doc_global(doc_symbol, None)
if Node.name == 'main':
if Node.name == 'main' and getattr(self.Trans, 'TracebackEnabled', False):
_tb_install: str | None = getattr(self.Trans, 'TracebackInstallSymbol', None)
if not _tb_install:
_tb_sha1 = getattr(Gen, 'ModuleSha1Map', {}).get('traceback')
if _tb_sha1:
_tb_install = f'{_tb_sha1}.Install'
if not _tb_install:
raise RuntimeError(
'--traceback: main 入口无法解析 traceback.Install 符号'
'(TracebackInstallSymbol 未设置且 ModuleSha1Map 无 traceback)')
if _tb_install:
_install_fn = Gen._CreateOrReuseFuncDecl(
_tb_install, ir.FunctionType(ir.IntType(32), []))