focus-creative-games / hybridclr

HybridCLR是一个特性完整、零成本、高性能、低内存的Unity全平台原生c#热更新解决方案。 HybridCLR is a fully featured, zero-cost, high-performance, low-memory solution for Unity's all-platform native c# hotupdate.

Home Page:https://code-philosophy.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unity 2020.3.48f1 + HybridCLR 4.0.14,在开启增量GC的情况下极大概率出现崩溃

xzhjieie opened this issue · comments

Describe the bug | 描述问题
Unity 2020.3.48f1 + HybridCLR 4.0.14,在开启增量GC的情况下极大概率出现崩溃;如果不开启增量GC,则不会出现这个问题了。后续升级版本到HybridCLR 4.0.15 后仍然存在崩溃问题。

Enviroment | 环境

  • Unity Version: 2020.3.48f1
  • com.code-philosophy.hybridclr Version: 4.0.14
  • Platform: Android
  • CPU:Arm64

To Reproduce | 复制步骤
C++ 层调用AOT 中的接口 OnRecvGameShowData,在切换场景后引起了崩溃。

// C++ 层调用该接口
[MonoPInvokeCallback(typeof(DegateOnRecvGameShowData))]
public static void OnRecvGameShowData(int iCmd, IntPtr data, int iLen)
{
    Marshal.Copy(data, abyRecvBufer, 0, iLen);
    // 利用反射调用热更 dll 里面的接口
    HotApis.GameApp_GeMain_Instance_OnRecvGameShowData(iCmd, abyRecvBufer, iLen);
}

崩溃日志
崩溃日志是这样的
image

这是解析后的调用堆栈日志
image

提供可复现的工程。直接提供win visual studio工程也可以