Revit Design Automation报-536852669错误崩溃原因咨询
Design Automation for Revit 工作项崩溃(错误码-536852669)可能原因
问题场景
在Design Automation for Revit平台运行工作项时发生崩溃,对应错误代码为-536852669,崩溃触发时机为任务接近执行完成阶段,相关运行日志如下:
[06/08/2022 20:55:21] End Revit Core Engine standard output dump. [06/08/2022 20:55:21] Error: Application revitcoreconsole.exe exits with code -536852669 which indicates an error. [06/08/2022 20:55:21] End script phase. [06/08/2022 20:55:21] Error: An unexpected error happened during phase CoreEngineExecution of job. [06/08/2022 20:55:21] Job finished with result FailedExecution
本次运行加载的插件为基于IExportContext接口开发的自定义导出器,处理目标为总大小7GB的大体量Revit模型。
可能的崩溃原因
- 内存配额超限:Design Automation for Revit的工作项运行有固定内存上限,7GB大小的Revit模型加载本身就会占用极高内存,叠加自定义导出过程中缓存的几何数据、中间导出结果如果没有及时释放,在任务临近收尾、内存占用达到峰值时很容易突破配额限制,触发系统强制终止进程。该错误码对应Revit核心进程的原生访问违例类报错,和内存耗尽场景的匹配度很高。
- 自定义导出器的资源释放逻辑缺陷:如果
IExportContext实现逻辑中调用了非托管资源(包括手动申请的几何内存、未托管的文件流、Revit API返回的非托管几何对象引用),在导出流程走到末尾批量释放资源时,若存在重复释放、空指针访问、已回收内存读写的问题,就会刚好在任务接近完成时触发进程崩溃,和日志表现的崩溃时机完全吻合。 - 异常图元触发的几何处理错误:7GB级别的大体量模型大概率存在少量损坏图元、异形特殊构造的体量几何,若自定义导出逻辑没有加逐图元的异常捕获兜底,前期遍历正常图元时不会触发问题,等遍历到位于模型遍历序列末尾的异常几何时,就会直接触发Revit核心引擎崩溃,且不会抛出可被捕获的托管层异常。
- 收尾阶段写盘异常:如果导出逻辑是在所有图元遍历完成后,才统一执行结果组装、文件写入操作,大体量模型对应的导出结果体积通常也很大,若工作项临时存储配额不足、大文件序列化逻辑存在bug、写盘时触发IO错误,也会在任务收尾阶段直接导致进程崩溃。
- Revit核心引擎大模型兼容bug:当Revit模型体积超过3GB的常规使用阈值时,
revitcoreconsole.exe在执行导出收尾的链接资源卸载、临时文件清理操作时,存在概率性触发原生崩溃的已知问题,这类崩溃不会在托管日志中打印具体错误栈,只会返回这类负整数格式的进程退出码。
内容的提问来源于stack exchange,提问作者Ehsan Barekati
相关产品推荐
相关产品推荐

