ErrorRecorder Snapshot Guide
ErrorRecorder snapshot 的目标是把 TensorRT 内部错误信息复制到托管侧安全结构,而不是把 TensorRT 内部对象或 borrowed pointer 暴露给 public API。
当前覆盖
- Runtime、Refitter、Builder、Engine、ExecutionContext、NetworkDefinition、EngineInspector 已提供 copied snapshot API。
- 这些 owner 的 snapshot 都只复制错误记录,不暴露 recorder 指针;
HasErrorRecorder/ClearErrorRecorder仍保持独立的安全边界。 - Direct
IErrorRecorder*ownership、引用计数和 interface info 仍保持 deferred。
Snapshot 内容
各 owner snapshot 会复制:
- error code。
- error description。
- error count。
- has overflowed 状态。
如果 TensorRT 返回的字符串生命周期不由调用方持有,native bridge 必须使用 caller buffer 或复制模式,不能直接返回悬空指针。
覆盖矩阵把 IErrorRecorder::getNbErrors、getErrorCode、getErrorDesc、hasOverflowed 和 TRT10+ 的 copied interface metadata 归并到各 owner snapshot 的安全替代实现;这只是表示只读诊断语义已通过 owner 对象复制出来,不表示 public API 可以取得或持有裸 IErrorRecorder*。
质量门禁
测试应覆盖:
- 无错误时返回空 snapshot。
- 有错误时复制 code 和 message。
- 对象释放后 snapshot 仍可读。
- 跨 ABI 不抛异常。
边界
ErrorRecorder snapshot 是诊断能力,不等同于 runtime proof。它帮助解释失败原因,但不能把失败或 blocked 状态写成通过。
设计门状态
error-recorder-diagnostics-design-gate 已把当前可用能力收口为 design gate:CopiedDiagnosticsReady=True、PointerFreeSurfaceReady=True、RecorderPointerExposed=False、RefCountPublicOwnershipControl=False、RuntimeProofBlocked=True。详见 ErrorRecorder Diagnostics Design Gate。