Windows/Linux下构建Unreal Engine 5.1.1项目时出现内存异常
UE5.1.1中Unreal.js插件引发打包崩溃(EXCEPTION_ACCESS_VIOLATION)
问题概况
基于Unreal.js插件开发的项目在UE5.0.3及更早版本可正常构建打包,但迁移至UE5.1.1后,打包过程中触发EXCEPTION_ACCESS_VIOLATION异常,导致游戏无法导出。仅启用Unreal.js插件的UE5.1.1空白示例项目也能复现该问题。
已尝试的排查动作
- 更换多个版本的Visual Studio编译项目
- 调整项目各类配置参数
- 切换不同版本的Microsoft Desktop支持组件
- 尝试导出Linux平台版本,故障未解决
关键错误日志
LogWindows: Error: === Critical error: === LogWindows: Error: LogWindows: Error: Fatal error! LogWindows: Error: LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000040 LogWindows: Error: LogWindows: Error: [Callstack] 0x00007ff8779729e5 UnrealEditor-JavascriptConsole.dll!FJavascriptCommandExecutor::CacheJavascriptContext() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\UnrealJS\Source\JavascriptConsole\Private\JavascriptCommandExecutor.cpp:115] LogWindows: Error: [Callstack] 0x00007ff87797193f UnrealEditor-JavascriptConsole.dll!FJavascriptCommandExecutor::FJavascriptCommandExecutor() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\UnrealJS\Source\JavascriptConsole\Private\JavascriptCommandExecutor.cpp:15] LogWindows: Error: [Callstack] 0x00007ff8779718c0 UnrealEditor-JavascriptConsole.dll!SharedPointerInternals::NewIntrusiveReferenceController<1,FJavascriptCommandExecutor>() [D:\RocketSync\5.1.0-23058290+++UE5+Release-5.1\Working\Engine\Source\Runtime\Core\Public\Templates\SharedPointerInternals.h:445] LogWindows: Error: [Callstack] 0x00007ff87797445a UnrealEditor-JavascriptConsole.dll!FJavascriptConsoleModule::StartupModule() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\UnrealJS\Source\JavascriptConsole\Private\JavascriptConsoleModule.cpp:15] ...(省略后续非关键调用栈) LogWindows: Error: end: stack for UAT Took 9.6905192s to run UnrealEditor-Cmd.exe, ExitCode=3 ... AutomationTool exiting with ExitCode=25 (Error_UnknownCookFailure)
问题分析
从调用栈可以明确,异常发生在Unreal.js插件的JavascriptConsole模块启动阶段:FJavascriptCommandExecutor::CacheJavascriptContext()方法尝试访问空指针偏移地址0x0000000000000040,说明该模块依赖的Javascript上下文对象在UE5.1.1的引擎启动流程中未被正确初始化,属于插件与UE5.1.1的API兼容性问题。
解决方案建议
- 优先更新插件版本:检查Unreal.js插件的官方分发渠道,确认是否有针对UE5.1.1的适配版本,直接升级是最直接的解决方式。
- 修改插件源码修复空指针:若能获取插件源码,定位到
JavascriptCommandExecutor.cpp第115行,增加空指针检查逻辑,确保访问的对象不为空再执行后续操作。 - 临时禁用JavascriptConsole模块:如果项目中未使用该模块功能,可修改
JavascriptConsole.uplugin文件,将模块的LoadingPhase调整为PostEngineInit,或者直接注释掉该模块的加载配置,避免在启动阶段触发错误。 - 从源码重新编译插件:针对UE5.1.1的引擎API变更,手动调整Unreal.js插件的源码,重新编译适配UE5.1.1版本。
内容的提问来源于stack exchange,提问作者Cardstdani
相关产品推荐
相关产品推荐

