CocosCreator2.3.1版本,Android平台龙骨动画空指针,signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0

  • Creator 版本:2.3.1

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:

03-13 16:53:00.157 20069 20069 I crash_dump32: performing dump of process 18686 (target tid = 18714)
03-13 16:53:00.174 20069 20069 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-13 16:53:00.175 20069 20069 F DEBUG   : Build fingerprint: 'HONOR/HLK-AL00/HWHLK-H:9/HONORHLK-AL00/9.1.1.165C00:user/release-keys'
03-13 16:53:00.175 20069 20069 F DEBUG   : Revision: '0'
03-13 16:53:00.175 20069 20069 F DEBUG   : ABI: 'arm'
03-13 16:53:00.175 20069 20069 F DEBUG   : Happend: 'Fri Mar 13 16:53:00 2020
03-13 16:53:00.175 20069 20069 F DEBUG   : '
03-13 16:53:00.175 20069 20069 F DEBUG   : SYSVMTYPE: Maple
03-13 16:53:00.175 20069 20069 F DEBUG   : APPVMTYPE: Art
03-13 16:53:00.175 20069 20069 F DEBUG   : pid: 18686, tid: 18714, name: GLThread 264  >>> com.qiku.football <<<
03-13 16:53:00.175 20069 20069 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
03-13 16:53:00.175 20069 20069 F DEBUG   : Cause: null pointer dereference
03-13 16:53:00.175 20069 20069 F DEBUG   :     r0  00000000  r1  bf07d480  r2  c6d04890  r3  00000001
03-13 16:53:00.175 20069 20069 F DEBUG   :     r4  c6d04928  r5  bf07c620  r6  c6d04890  r7  e8531f3c
03-13 16:53:00.175 20069 20069 F DEBUG   :     r8  c6d04928  r9  c53d5a0c  r10 00000000  r11 c6d04880
03-13 16:53:00.175 20069 20069 F DEBUG   :     ip  c7c33b6c  sp  c6d04880  lr  c75636dc  pc  c75636dc
03-13 16:53:00.178 20069 20069 F DEBUG   : 
03-13 16:53:00.178 20069 20069 F DEBUG   : backtrace:
03-13 16:53:00.178 20069 20069 F DEBUG   :     #00 pc 0085d6dc  /data/app/com.qiku.football-bpKTv2V5PsahATKp3vh-kw==/lib/arm/libcocos2djs.so (dragonBones::CCArmatureCacheDisplay::getArmature() const+16)
03-13 16:53:00.178 20069 20069 F DEBUG   :     #01 pc 0080f50c  /data/app/com.qiku.football-bpKTv2V5PsahATKp3vh-kw==/lib/arm/libcocos2djs.so (js_cocos2dx_dragonbones_CCArmatureCacheDisplay_getArmatureRegistry(v8::FunctionCallbackInfo<v8::Value> const&)+296)
03-13 16:53:00.178 20069 20069 F DEBUG   :     #02 pc 00c578f9  /data/app/com.qiku.football-bpKTv2V5PsahATKp3vh-kw==/lib/arm/libcocos2djs.so
03-13 16:53:00.178 20069 20069 F DEBUG   :     #03 pc 00c572bd  /data/app/com.qiku.football-bpKTv2V5PsahATKp3vh-kw==/lib/arm/libcocos2djs.so
03-13 16:53:00.178 20069 20069 F DEBUG   :     #04 pc 00c56cf9  /data/app/com.qiku.football-bpKTv2V5PsahATKp3vh-kw==/lib/arm/libcocos2djs.so
03-13 16:53:00.178 20069 20069 F DEBUG   :     #05 pc 002be0c0  /data/app/com.qiku.football-bpKTv2V5PsahATKp3vh-kw==/lib/arm/libcocos2djs.so
  • 手机型号 :

  • 编辑器之前是否有其它报错 :无

  • 出现概率:高,云真机测试,100台接近50%出现这个Crash

请问项目对龙骨的使用是怎样的?如果是反馈 bug,请你尽量提供一下复现 demo,或者代码片段。

看代码是骨骼对象没有创建成功,看看是不是贴图或者骨骼文件不存在。

1,在进入游戏的时候会加载模型prefab,然后把prefab中的dragonAtlasAsset,dragonAsset缓存起来

2,然后游戏过程中会有个通用prefab ,他在属于哪个模型的时候会切换到同样的样子,所以这里是直接把他的dragonAtlasAsset,dragonAsset赋值成缓存的资源

另外升级后还遇到另外个问题 在onload的时候缓存起本身的龙骨资源(也就是默认模型),然后在节点从对象池拿出来的时候重新赋值回这个默认资源的话,龙骨动画会出现闪烁的情况(不断在几个模型样子来回变动)

重现的demo已经发邮件了

好的,感谢

demo是重现我说的闪烁问题的,而闪退的问题我们已经定位到问题了,


问题出在prefab中引用的龙骨的资源被我们不小心release掉了,于是json为空字符串,在浏览器上就报错,而在真机上则会闪退

了解。

我没看出是什么问题,你说的模型来回变动,不是你代码里的逻辑导致的么?


或者你能把demo搞得简单一点么,把一些无关的逻辑删掉,不然看着比较费劲

demo就是想说明 model的来回变动 会导致左边的节点也出现切换的情况,在安卓上就会,实际上左边的那堆节点跟model本身没关系,但是他们也出现了变换

demo里面有个录屏 左边那堆龙骨节点也会跟着变换模型,但是demo跑在web版本上的时候 是不会出现的

demo里面 也没有啥无关逻辑了,我大概说下问题,以及demo的思路

问题:
1,首先把A节点的龙骨资源映射在一个map中,里面存的是dragonAsset,dragonAtlasAsset,这两个按理说是存数据,不会有关联吧
2,demo 跑着跑着,在原生在就会出现 某几个节点跟着A的变动也出现变动的情况,按理说,其它节点,只是引用了dragonAsset,dragonAtlasAsset这些数据,本身跟A节点是毫无关系的,但是他们在安卓上就出现了异常,浏览器上则不会

代码思路:
1,右边4个模型在加载的时候缓存到map中
2,点击开始,会创建一批节点到左边的节点上,这个操作每隔一秒做一次(因为bug不是一次创建就会出现,而是要某个时机)
3,这时候频繁的改变4个被缓存的模型的dragonAsset,dragonAtlasAsset 就极大概率出现刚才创建在左边的节点跟随这个节点也改变模型。

怀疑问题:
转换过cache的模式,好像还是存在,其次是要设置比较短的变化时间才会出现,这里怀疑是一帧里面改变了多次dragonAsset,dragonAtlasAsset 导致的问题

1赞