refactor(tpv): set_asan_mode 移除改直接赋 _asan_mode bool;ClassGenEnum 加 Renum 字段 0xb0 崩溃定位临时诊断(定位后移除)
This commit is contained in:
1 parent
0e48190ba9
commit
ca1453c0ec
2 files changed
+27
-2
No files matched your search
@@ -878,6 +878,31 @@ class ClassGenEnum(ClassGenBase.ClassGenBase):
|
||||
string.memset(self.RenumVariantTags, 0, 8 * RENUM_CLASS_MAX * RENUM_VARIANT_PER_CLASS)
|
||||
self.RenumClassCount = 0
|
||||
|
||||
# ============ 临时诊断(0xb0 崩溃定位,定位后移除) ============
|
||||
# lazy init 后 RenumClassNames 必非空;此时若 RCV 异常(null/小值)
|
||||
# 说明字段被越界覆盖或 __init__ 未生效,fail-fast 暴露崩溃现场。
|
||||
fb_diag: str = VLogger.fmt_buf()
|
||||
if fb_diag is not None:
|
||||
viperlib.snprintf(fb_diag, 1024,
|
||||
"[RENUM-DIAG] self=%llu RN=%llu RCV=%llu RVN=%llu RVT=%llu RCount=%d class=%s",
|
||||
t.CUInt64T(self), t.CUInt64T(self.RenumClassNames),
|
||||
t.CUInt64T(self.RenumClassVariantCounts),
|
||||
t.CUInt64T(self.RenumVariantNames),
|
||||
t.CUInt64T(self.RenumVariantTags),
|
||||
self.RenumClassCount, class_name)
|
||||
VLogger.info(fb_diag, "RENUM")
|
||||
rcv_chk: t.CUInt64T = t.CUInt64T(self.RenumClassVariantCounts)
|
||||
if rcv_chk == 0 or rcv_chk < 4096:
|
||||
fb_fail: str = VLogger.fmt_buf()
|
||||
if fb_fail is not None:
|
||||
viperlib.snprintf(fb_fail, 1024,
|
||||
"[RENUM-FAIL] RCV=%llu 异常(lazy init 后应为 perm_pool 地址),RenumClassCount=%d class=%s",
|
||||
t.CUInt64T(self.RenumClassVariantCounts),
|
||||
self.RenumClassCount, class_name)
|
||||
VLogger.error(fb_fail, "RENUM")
|
||||
stdlib.exit(1)
|
||||
# ============ 临时诊断结束 ============
|
||||
|
||||
# 检查是否已注册(避免重复注册)
|
||||
for i in range(self.RenumClassCount):
|
||||
existing: str = self.RenumClassNames[i]
|
||||
|
||||
+2
-2
@@ -258,7 +258,7 @@ Target: %s
|
||||
# includes 缓存用独立目录 .binary_asan 隔离 asan 插桩 obj,避免与非 asan obj 混链
|
||||
# (asan obj 引用 __asan_init 等符号,非 asan 链接不提供 asan 库 → undefined reference)
|
||||
if args.get_bool("asan"):
|
||||
BuildPipeline.set_asan_mode(1)
|
||||
BuildPipeline._asan_mode = True
|
||||
Config.set_inc_bin_suffix(".binary_asan")
|
||||
if log is not None:
|
||||
log.info("ASan 模式已启用(opt -passes=asan + libclang_rt)", "asan")
|
||||
@@ -272,7 +272,7 @@ Target: %s
|
||||
viperlib.snprintf(fb_asan, 1024, "ASan 模式清理 includes 缓存: %d 个文件(将重建 asan obj)", n_asan)
|
||||
log.info(fb_asan, "asan")
|
||||
else:
|
||||
BuildPipeline.set_asan_mode(0)
|
||||
BuildPipeline._asan_mode = False
|
||||
Config.set_inc_bin_suffix(".binary")
|
||||
|
||||
# --nowarn-register:抑制"外部函数返回类型未登记"类 WARN 输出
|
||||
|
||||
Reference in new issue
Block a user