【3.3.2原生Spine】setCompleteListener抛错卡死

非必现,无法提供demo。

相关业务代码截图:


jsb-engine.js代码截图

以下是错误日志:

03-18 16:53:36.926 27502 27561 E jswrapper: [ERROR] (C:/anyue/cocosDash/CocosDashboard/resources/.editors/Creator/3.3.2/resources/resources/3d/engine-native/cocos/bindings/jswrapper/v8/Object.cpp, 528): Invoking function (0xd4697f70) failed!
03-18 16:53:36.926 27502 27561 E jswrapper: [ERROR] (C:/anyue/cocosDash/CocosDashboard/resources/.editors/Creator/3.3.2/resources/resources/3d/engine-native/cocos/bindings/jswrapper/v8/Object.cpp, 528): Invoking function (0xd4697a90) failed!
03-18 16:53:36.944 27502 27561 E jswrapper: ERROR: Uncaught TypeError: Cannot read property '_compeleteListener' of undefined, location: jsb-adapter/jsb-engine.js:0:0
03-18 16:53:36.944 27502 27561 E jswrapper: STACK:
03-18 16:53:36.944 27502 27561 E jswrapper:  - [0]anonymous@jsb-adapter/jsb-engine.js:4097
03-18 16:53:36.944 27502 27561 E jswrapper:  - [1]anonymous@jsb-adapter/jsb-engine.js:1511
03-18 16:53:36.944 27502 27561 E jswrapper:  - [2]emit@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 E jswrapper:  - [3]tick@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 E jswrapper:  - [4]anonymous@assets/main/index.a1f18.jsc:1
03-18 16:53:36.944 27502 27561 E jswrapper:  - [5]e@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 E jswrapper:  - [6]tick@jsb-adapter/jsb-builtin.js:601
03-18 16:53:36.944 27502 27561 E Cocos   : 16:53:36 [ERROR]: [ERROR] file C:/xxxx/native/engine/common/Classes/Game.cpp: line 54 
03-18 16:53:36.944 27502 27561 E Cocos   : 16:53:36 [ERROR]: 
03-18 16:53:36.944 27502 27561 E Cocos   : Uncaught Exception:
03-18 16:53:36.944 27502 27561 E Cocos   :  - location :  (see stack)
03-18 16:53:36.944 27502 27561 E Cocos   :  - msg : Uncaught TypeError: Cannot read property '_compeleteListener' of undefined
03-18 16:53:36.944 27502 27561 E Cocos   :  - detail : 
03-18 16:53:36.944 27502 27561 E Cocos   :        - [0]anonymous@jsb-adapter/jsb-engine.js:4097
03-18 16:53:36.944 27502 27561 E Cocos   :  - [1]anonymous@jsb-adapter/jsb-engine.js:1511
03-18 16:53:36.944 27502 27561 E Cocos   :  - [2]emit@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 E Cocos   :  - [3]tick@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 E Cocos   :  - [4]anonymous@assets/main/index.a1f18.jsc:1
03-18 16:53:36.944 27502 27561 E Cocos   :  - [5]e@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 E Cocos   :  - [6]tick@jsb-adapter/jsb-builtin.js:601
03-18 16:53:36.944 27502 27561 E Cocos   : 
03-18 16:53:36.944 27502 27561 D jswrapper: JS: [ERROR]: (see stack) Uncaught TypeError: Cannot read property '_compeleteListener' of undefined  - [0]anonymous@jsb-adapter/jsb-engine.js:4097
03-18 16:53:36.944 27502 27561 D jswrapper:  - [1]anonymous@jsb-adapter/jsb-engine.js:1511
03-18 16:53:36.944 27502 27561 D jswrapper:  - [2]emit@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 D jswrapper:  - [3]tick@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 D jswrapper:  - [4]anonymous@assets/main/index.a1f18.jsc:1
03-18 16:53:36.944 27502 27561 D jswrapper:  - [5]e@src/cocos-js/cc.c6c13.js:1
03-18 16:53:36.944 27502 27561 D jswrapper:  - [6]tick@jsb-adapter/jsb-builtin.js:601
03-18 16:53:36.944 27502 27561 E jswrapper: [ERROR] (C:/anyue/cocosDash/CocosDashboard/resources/.editors/Creator/3.3.2/resources/resources/3d/engine-native/cocos/bindings/jswrapper/v8/Object.cpp, 528): Invoking function (0xd45bf610) failed!

@muxiandong 麻烦看一下

@liqiao 麻烦看一下,原生spine setCompleteListener抛错卡死

@jare 麻烦看一下,原生spine setCompleteListener抛错卡死

@panda 麻烦看一下,原生spine setCompleteListener抛错卡死

手动顶贴一下,来人看看呀!

3.x spine原生啊
你不看下性能和发热吗
我都退2.x了

setcompletelistener 你传的是null。你试试传个空函数有没有这个问题。像这样setcompletelistener (function a(){}) 这个问题应该是js的问题,之前碰到过,高发于安卓。

好的,我这边试一下

没办法,要用3D粒子~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

感觉不太一样,如果setCompleteListener是null导致的问题,论坛里有类似情况,报错信息是this._compeleteListener is not a function或者‘this._compeleteListener’ is undefined。


现在遇到的情况是,Cannot read property ‘_compeleteListener’ of undefined,是this为undefined。

不清楚具体业务逻辑,之前是遇到过这类情况,但不是spine。如果this为undefined,我觉得先看看具体业务逻辑是否存在提前销毁spine导致监听函数调用报错。

有道理,有往这个方向排查,目前是在animation.setCompleteListener的方法内部,记录节点名和动画名,看看能不能定位到具体是什么逻辑触发了这个异常。

不过这个异常出现概率实在太低,几天才能遇到一次,还没有出现。

请问你怎么解决tick循环报错的问题呀?Android原生会卡死界面

不能全改掉,只能改掉部分
去修改tween源码,schedule的源码

感谢,我刚刚试了下,另外在director 修改了tick,也catch了一些循环报错的异常。

再请教下如何打印日志栈?