3.7.2原生spine崩溃及动画残留

  • Creator 版本: 3.7.2

  • 目标平台: iOS / Android

  • 重现方式:

  • 首个报错:

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

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率: 100%

特效类spine动态加载
1.使用NodePool进行回收复用的情况下:
(1)ios/android都会在左下角那有动画残留
(2)ios 在复用若干次后必崩溃
gfx::DepthStencilState* StencilManager::getDepthStencilState(StencilStage stage, Material* mat) {
if (mat && !mat->getPasses()->empty()) {
}
}
mat->getPasses() 报 EXC_BAD_ACCESS (code=1

2.放弃NodePool回收复用,改成实时创建,使用完destroy()掉:
ios 在创建若干次后必崩溃(Android还没测试,未知)
MiddlewareManager::update(){
editor->update(dt);
}
editor->update(dt) 报 EXC_BAD_ACCESS (code=1, address=0xef2ca00000000293)

方便提供个测试 demo?

我自己找到解决方式了,给你提供一个复现的方式
在用NodePool复用的情况下 由于怕有上次残留,所以加了active=false来设置隐藏,加载成功再显示
this.skeleton.node.active=false;
bundle.load(url,()=>{//加载spine
// spine加载完成后
this.skeleton.node.active=true;
this.skeleton.skeletonData = data;
})

反复的设置active 无论是Android还是ios 都会各种崩溃
无奈只能去掉active的设置 改成设置scale为0和1

另外,在this.skeleton.skeletonData = data之前就将该spine所在节点添加(addChild(spineNode))也容易出现崩溃
需要加载完成后再执行addChild(spineNode)

1.去掉反复active
2.避免在this.skeleton.skeletonData = data之前就addChild()
通过这两处修改,崩溃和残影的问题貌似都解决了,无论用不用NodePool都没问题。

1赞

NewProject_7.zip (1.4 MB)
帮忙看下有啥要改的?目前测试一直没遇见崩溃

单次,单个spine 是几乎不会出问题的,
是在多个动画反复的创建(或者NodePool复用)和销毁(或者NodePool回收)
用active方式和 skeletonData=xx 之前addchild() 崩溃率非常高
改active为scale 在skeletonData=xx 之后addchild() 发现还是会有崩溃,只是会少很多(NodePool方式好像崩溃得更频率些,不用NodePool就已经比较少了,但还是会出现)

我也出现啦,逻辑和你差不多,反复active和this.sp.skeletonData = data,就会出现崩掉。我是3.7.1版本。

方便整个简单的 demo? 测试没法复现

不止是 反复active和this.sp.skeletonData = data的问题
即使是去掉active 操作 还是会有问题,只是少一点。

我们使用dragonbones也遇到了这个问题,请问有解决方案了吗

1赞

插个眼!!!

请问 解决了吗

windows 上也遇到了这个问题

哇,我也是这样,项目是塔防,用了很多spine,也是用回收池不断的把spine节点removeFromParent和addChild,后面感觉这样对性能损耗比较大,就改成只设置active来隐藏或显示spine节点,但还是较大几率崩溃(安卓平台,h5没报错),烦死了!报错也是指向这个MiddlewareManager::update!

报错信息:
2023-06-05 15:34:48.000 7509-7767/? A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 7767 (Thread-2), pid 7509 (com.ydgame.gsjb)
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: Softversion: PD2168F_A_11.0.11.1.W10.V000L1
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: Time: 2023-06-05 15:34:48
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: Build fingerprint: ‘vivo/PD2168/PD2168:11/RP1A.200720.012/compiler0413100703:user/release-keys’
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: Revision: ‘0’
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: ABI: ‘arm64’
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: Timestamp: 2023-06-05 15:34:48+0800
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: pid: 7509, tid: 7767, name: Thread-2 >>> com.ydgame.gsjb <<<
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: uid: 10263
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: Cause: null pointer dereference
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: x0 0000000000000001 x1 0000006fc6ae2640 x2 0000006fc6ae2650 x3 0000000000000000
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: x4 0000006f934428a8 x5 000000000001fd05 x6 0000006e097e2369 x7 000000000001fd2f
2023-06-05 15:34:48.271 8727-8727/? A/DEBUG: x8 0000000000000000 x9 0000000000000001 x10 0000000000000001 x11 cbf3e512445ad7c7
2023-06-05 15:34:48.272 8727-8727/? A/DEBUG: x12 0000000000000000 x13 0000000000000011 x14 0000006e0810246d x15 0000000000000002
2023-06-05 15:34:48.272 8727-8727/? A/DEBUG: x16 0000006fc62c7c40 x17 00000070c017a330 x18 0000006fc0ee6000 x19 0000006fc6ae2960
2023-06-05 15:34:48.272 8727-8727/? A/DEBUG: x20 0000006e00000000 x21 0000006fc63264c5 x22 0000000000000000 x23 0000006fc6ae4000
2023-06-05 15:34:48.272 8727-8727/? A/DEBUG: x24 0000006fc40ae478 x25 0000006fc6326000 x26 0000006e09cac4b9 x27 0000006fc6ae4000
2023-06-05 15:34:48.272 8727-8727/? A/DEBUG: x28 0000006e0000a320 x29 0000006fc6ae2670
2023-06-05 15:34:48.272 8727-8727/? A/DEBUG: lr 0000006fc359abf8 sp 0000006fc6ae25f0 pc 0000006fc359ac08 pst 0000000060000000
2023-06-05 15:34:48.335 8727-8727/? A/DEBUG: backtrace:
2023-06-05 15:34:48.335 8727-8727/? A/DEBUG: #00 pc 000000000191ac08 /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (cc::middleware::MiddlewareManager::update(float)+300) (BuildId: 97113216700d565747be2533146873016e143e36)
2023-06-05 15:34:48.335 8727-8727/? A/DEBUG: #01 pc 000000000242e640 /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (BuildId: 97113216700d565747be2533146873016e143e36)
2023-06-05 15:34:48.335 8727-8727/? A/DEBUG: #02 pc 0000000001af8134 /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (jsbFunctionWrapper(v8::FunctionCallbackInfov8::Value const&, bool ()(se::State&), char const)+376) (BuildId: 97113216700d565747be2533146873016e143e36)
2023-06-05 15:34:48.336 8727-8727/? A/DEBUG: #03 pc 000000000242e49c /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (js_cc_middleware_MiddlewareManager_updateRegistry(v8::FunctionCallbackInfov8::Value const&)+36) (BuildId: 97113216700d565747be2533146873016e143e36)
2023-06-05 15:34:48.336 8727-8727/? A/DEBUG: #04 pc 00000000034231e8 /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (BuildId: 97113216700d565747be2533146873016e143e36)
2023-06-05 15:34:48.336 8727-8727/? A/DEBUG: #05 pc 0000000003422848 /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (BuildId: 97113216700d565747be2533146873016e143e36)
2023-06-05 15:34:48.336 8727-8727/? A/DEBUG: #06 pc 0000000003421fd8 /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (BuildId: 97113216700d565747be2533146873016e143e36)
2023-06-05 15:34:48.336 8727-8727/? A/DEBUG: #07 pc 000000000333a968 /data/app/~~f-b4H6Mb4cObs-fBgebd-g==/com.ydgame.gsjb-gdjggclaIvfh_-mukSjHwQ==/lib/arm64/libcocos.so (BuildId: 97113216700d565747be2533146873016e143e36)

不要沉 ,顶一下

不要沉 ,顶一下

3.7.3 问题依旧存在

是的,现在就因为这个项目一直上不了

唉。。。掉坑里了,我也是出这个问题

已经解决
:grin:

1赞