-
Notifications
You must be signed in to change notification settings - Fork 718
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[UE] Bug: $InRef<UE.TArray>与数组扩容引起的一种崩溃情况 #1963
Comments
首先得避免直接为了满足传参要求而直接
你试试还会崩不。 另外,新版本js调用成员方法默认是不经过蓝图的,感觉即使按你这写法应该也不至于崩,你看看你这里是怎样的:c961363 |
感谢车神回复:D
|
我跟踪了下,感觉Puerts的处理是符合预期的(浅拷贝过去,处理完成后浅拷贝回来)。问题也不在调用方怎么做。 |
这的SlowCall分支会有这问题
我建议你在你们项目试试,如果整个项目跑一段时间没发现问题我直接在主线去掉好了。 |
这问题要解决其实就是按FastCall来。 |
这应该不行,FastCall应该会导致RPC发不了。 |
FastCall不会有这样的问题,但FastCall不支持RPC。 |
前置阅读 | Pre-reading
Puer的版本 | Puer Version
latest master
UE的版本 | UE Version
5.3 / 5.5
发生在哪个平台 | Platform
Editor(win)
错误信息 | Error Message
此崩溃与函数出参拷贝, 及数组扩容相关,
详见下述 "问题重现".
问题成因虽然比较清楚, 但对如何防止这种情况, 或及时检查到此类问题, 比较困扰,
还请车神指教, 感谢:D
问题重现 | Bug reproduce
[1/5] 打开 puerts_unreal_demo 工程
[2/5] 打开 "继承引擎类功能"
[3/5] 新建 MyPlayerController.ts 文件, 并粘贴下述代码
MyPlayerController.ts
[4/5] 修改GameMode, 应用MyPlayerController
[5/5] 在Editor中Play, 即可重现崩溃
无需选择网络模式, 用默认的Standalone模式即可.
线索:
this.FooArray
的FScriptArray.Data
puerts/unreal/Puerts/Source/JsEnv/Private/PropertyTranslator.cpp
Line 903 in a565f51
this.FooArray
出现了扩容, 其旧FScriptArray.Data
失效FScriptArray.Data
, 造成内存写越界, 进而在后续环节崩溃puerts/unreal/Puerts/Source/JsEnv/Private/FunctionTranslator.cpp
Line 614 in a565f51
日志:
The text was updated successfully, but these errors were encountered: