安卓崩溃问题

  • Creator 版本: 3.8.2

  • 目标平台: Android

  • 重现方式:安卓原生集成cocos cocos页面仅放一个简单的模型 和一个退出按钮 反复进出cocos的activity 在cocos场景资源少的情况下崩溃概率较小,大概30 次以后会出现空指针崩溃问题 cocos页面脚本就挂载了一个game.end方法

  • 首个报错: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x00000000000000a8
    Cause: null pointer dereference
    x0 b40000770470d000 x1 b4000077462f5880 x2 00000077b6bfade4 x3 00000076002bf441
    x4 0000000000000000 x5 0000007600000251 x6 00000076015dd315 x7 0000000000000151
    x8 0000000000000000 x9 0000000000000030 x10 00000000002c2555 x11 b4000077013d1860
    x12 0000000000000000 x13 000000000000000e x14 0000000000000019 x15 0000000000000003
    x16 000000773c2f7068 x17 000000773a8de868 x18 0000000000000000 x19 b400007701228780
    x20 b400007704a9fce0 x21 b4000077012287d0 x22 0000000000000001 x23 00000077b6bfc000
    x24 000000773c32e430 x25 00000077b6bfc000 x26 b400007701bda940 x27 0000007600182191
    x28 0000007600000000 x29 00000077b6bfada0
    lr 000000773a6ba1ac sp 00000077b6bfad60 pc 000000773a6ba1ec pst 0000000000001000
    5 total frames
    backtrace:
    #00 pc 0000000000a8c1ec /data/app/~~jwqVT3M0xNTQECAi8oW_HA==/com.lotogram.cocostest-e0ty5VmGfiv7UWJUXAG65Q==/base.apk!libcocos.so (offset 0x17f5000) (BuildId: baabf799539deaf6bd0e980e81dce4b6daa0d8df)
    #01 pc 0000000000b00874 /data/app/~~jwqVT3M0xNTQECAi8oW_HA==/com.lotogram.cocostest-e0ty5VmGfiv7UWJUXAG65Q==/base.apk!libcocos.so (offset 0x17f5000) (BuildId: baabf799539deaf6bd0e980e81dce4b6daa0d8df)
    #02 pc 000000000068a57c /data/app/~~jwqVT3M0xNTQECAi8oW_HA==/com.lotogram.cocostest-e0ty5VmGfiv7UWJUXAG65Q==/base.apk!libcocos.so (offset 0x17f5000) (BuildId: baabf799539deaf6bd0e980e81dce4b6daa0d8df)
    #03 pc 00000000005c1bd0 /data/app/~~jwqVT3M0xNTQECAi8oW_HA==/com.lotogram.cocostest-e0ty5VmGfiv7UWJUXAG65Q==/base.apk!libcocos.so (offset 0x17f5000) (BuildId: baabf799539deaf6bd0e980e81dce4b6daa0d8df)
    #04 pc 000000000000f528 /data/app/~~jwqVT3M0xNTQECAi8oW_HA==/com.lotogram.cocostest-e0ty5VmGfiv7UWJUXAG65Q==/base.apk (offset 0x2e9c000)

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率: 必现

@dumganhar 大佬能来看下吗

Android Studio 编译 debug 版本调试看下 crash 的时候具体挂在哪一行了。

你好 我这边打debug版本的包看到了错误地址 大佬能帮忙分析一下是哪里的问题吗 具体报错是下面这样的
#00 pc 0000000002c20b44 /data/app/~~157UgMCY6WiF88V5YXrPHw==/com.lotogram.cocostest-FfnaFdWpIh2LWa3q2amzfQ==/base.apk!libcocos.so (offset 0x3f55000) (cc::physics::PhysXSharedBody::addShape(cc::physics::PhysXShape const&)+236) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
#01 pc 0000000002d2cd50 /data/app/~~157UgMCY6WiF88V5YXrPHw==/com.lotogram.cocostest-FfnaFdWpIh2LWa3q2amzfQ==/base.apk!libcocos.so (offset 0x3f55000) (cc::physics::PhysXShape::onEnable()+64) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
#02 pc 0000000002bf3994 /data/app/~~157UgMCY6WiF88V5YXrPHw==/com.lotogram.cocostest-FfnaFdWpIh2LWa3q2amzfQ==/base.apk!libcocos.so (offset 0x3f55000) (cc::physics::CylinderShape::onEnable()+56) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
#03 pc 00000000020c3480 /data/app/~~157UgMCY6WiF88V5YXrPHw==/com.lotogram.cocostest-FfnaFdWpIh2LWa3q2amzfQ==/base.apk!libcocos.so (offset 0x3f55000) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
#04 pc 0000000001d3693c /data/app/~~157UgMCY6WiF88V5YXrPHw==/com.lotogram.cocostest-FfnaFdWpIh2LWa3q2amzfQ==/base.apk!libcocos.so (offset 0x3f55000) (jsbFunctionWrapper(v8::FunctionCallbackInfov8::Value const&, bool ()(se::State&), char const)+464) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
#05 pc 00000000020c33ac /data/app/~~157UgMCY6WiF88V5YXrPHw==/com.lotogram.cocostest-FfnaFdWpIh2LWa3q2amzfQ==/base.apk!libcocos.so (offset 0x3f55000) (js_cc_physics_CylinderShape_onEnableRegistry(v8::FunctionCallbackInfov8::Value const&)+36) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
#06 pc 000000000000f528 /data/app/~~157UgMCY6WiF88V5YXrPHw==/com.lotogram.cocostest-FfnaFdWpIh2LWa3q2amzfQ==/base.apk (offset 0x78d3000)

这里是 physX 物理引擎的适配代码。重点看下这个函数的实现。

进出游戏,是同一个进程吗?如果是同一个进程,那么直接在 android studio 中 debug 运行,这样 crash 后,会断在某一行,就能知道到底是哪个变量是空指针了。

好的,我这边先看一下。谢谢

你好 我们这边安卓的修改了一下PhysXSharedBody::addShape函数里边的一些代码 但是跑起来还是跟之前一样的崩溃问题 这边方便我发你一个demo帮忙看下吗

能够复现的话,可以发我看看。

这个是安卓项目的链接:https://wawa-1254281995.cos.ap-shanghai.myqcloud.com/cocos/cocosDemo/CocosTest.zip
这个是我的简单cocos项目链接:https://wawa-1254281995.cos.ap-shanghai.myqcloud.com/cocos/cocosDemo/cocosAnd.zip
文件有点大 上传不上来 麻烦您下载看一下 谢谢

具体复现方式的话就是点击进入cocos页面 然后退出 反复10几次之后会产生崩溃
这个是崩溃信息Xiaomi/shennong/shennong:14/UKQ1.230804.001/V816.0.48.0.UNBCNXM:user/release-keys

  #00 pc 0000000002c20b44  /data/app/~~65Zgs_ONPFWV7awRP_m-gQ==/com.lotogram.cocostest-I0WwF8AVJBdNWFj_wDmHKQ==/base.apk!libcocos.so (offset 0x3f55000) (cc::physics::PhysXSharedBody::addShape(cc::physics::PhysXShape const&)+236) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
  #01 pc 0000000002d2cd50  /data/app/~~65Zgs_ONPFWV7awRP_m-gQ==/com.lotogram.cocostest-I0WwF8AVJBdNWFj_wDmHKQ==/base.apk!libcocos.so (offset 0x3f55000) (cc::physics::PhysXShape::onEnable()+64) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
  #02 pc 0000000002bf0dc0  /data/app/~~65Zgs_ONPFWV7awRP_m-gQ==/com.lotogram.cocostest-I0WwF8AVJBdNWFj_wDmHKQ==/base.apk!libcocos.so (offset 0x3f55000) (cc::physics::BoxShape::onEnable()+56) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
  #03 pc 00000000020b757c  /data/app/~~65Zgs_ONPFWV7awRP_m-gQ==/com.lotogram.cocostest-I0WwF8AVJBdNWFj_wDmHKQ==/base.apk!libcocos.so (offset 0x3f55000) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
  #04 pc 0000000001d3693c  /data/app/~~65Zgs_ONPFWV7awRP_m-gQ==/com.lotogram.cocostest-I0WwF8AVJBdNWFj_wDmHKQ==/base.apk!libcocos.so (offset 0x3f55000) (jsbFunctionWrapper(v8::FunctionCallbackInfo<v8::Value> const&, bool (*)(se::State&), char const*)+464) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
  #05 pc 00000000020b74a8  /data/app/~~65Zgs_ONPFWV7awRP_m-gQ==/com.lotogram.cocostest-I0WwF8AVJBdNWFj_wDmHKQ==/base.apk!libcocos.so (offset 0x3f55000) (js_cc_physics_BoxShape_onEnableRegistry(v8::FunctionCallbackInfo<v8::Value> const&)+36) (BuildId: 1eff3287c2ea7ef39f8d27120675005fce16f866)
  #06 pc 000000000000f528  /data/app/~~65Zgs_ONPFWV7awRP_m-gQ==/com.lotogram.cocostest-I0WwF8AVJBdNWFj_wDmHKQ==/base.apk (offset 0x78d3000)

还有一种崩溃是在外面点击进入cocos按钮过快时会触发这个崩溃Xiaomishennongs.txt.zip (1.7 KB)

能够复现了,引擎是没有针对这种重复进出游戏的情况做支持。也没有专门测试过这种场景。所以是可能有问题的。

那目前没有什么办法能避免是么 只能等后续版本修复么



经过测试反复进出后在代码执行到addComponent(BoxCollider)的时候在c层的addShape函数中就会出现概率崩溃 等后续版本看下这个地方怎么修复吧

合并这个改动再试看看。

1赞

好的 非常感谢 我这边试一下 :grinning:

合并代码后 目前测试没有出现过崩溃了 非常感谢

1赞