iOS版本 glTexImage2D 报错 EXC_BAD_ACCESS

早上好,改了哪两个崩溃呢,可以发github commit看下吗。项目大了升级也比较麻烦。先看下能不能把修改合进来

https://github.com/cocos-creator/cocos2d-x-lite/pull/1681
https://github.com/cocos-creator/cocos2d-x-lite/pull/1659
https://github.com/cocos-creator/cocos2d-x-lite/pull/1687
https://github.com/cocos-creator/cocos2d-x-lite/pull/1629

借贴一问,我是1.10.2,是不是不会发布fix了。。
目前有3种crash现象
1、释放cc.AudioClip时,如果此时这个AudioClip被多个player播放且有一个以上的player在这时正好播放完成,就会crash,这个在AudioEngine的源码里面定位到了,是因为C++迭代器的索引在遍历过程中发生变化。这个问题对于短音效简直是灾难,比如非常频繁的子弹音,然后退出这个界面,导致资源被释放
2、iOS在启动游戏时,低概率刚看到闪屏就crash了,堆栈在执行main.js时就出现异常
3、在游戏过程中,低概率随机crash,感觉跟websocket的心跳包有关系
以上这几个crash困扰了几天,不知道贵团队是否还会更新1.x版本。2.x升级需要修改的api太多了,如今代码量有点大,修改起来很费劲,如果能给fix的办法,我自己动手来修复也可以的
@jare

3 可以尝试用 https://github.com/cocos-creator/cocos2d-x-lite/pull/1681 修复
1 和 2 无法确定,建议升级上来试试。

1.10 之前在论坛发过 1.10.3,只修复了若干个编辑器问题,这个是最终版,不会再发新版本了。

问题1可以参考这个 CrashIfClientProvidedBogusAudioBufferList崩溃 https://github.com/drelaptop/cocos2d-x/commit/adf094e047bcb9a51b0b75141966b85912a853ac

1赞

看了 @caochao 回复的提交应该是对应的这个 PR https://github.com/cocos2d/cocos2d-x/pull/19227 @minggo 我们可以把这个 PR 合到 Creator 吗?

可以,二者用的音频库是一样的。

1赞

我们已经进行了相关修复,详见 PR https://github.com/cocos-creator/cocos2d-x-lite/pull/1744

@jare 给的链接404

链接已更新

似乎还有问题,继续跟进中

对啊,问题还没解决

还没有解决!

你们目前使用的版本是多少?测试机型是什么?系统版本多少?可否提供下测试demo,支持我们排查这个问题,最近我们没有复现过这个崩溃。

creator2.0.7;iPhone X;IOS12.3.1;没有稳定的重现方法,随机在切换场景释放资源时出现,10次中有一两次左右,每次跑20分钟左右

坐等官方大佬修复

能给个可测试demo吗?

看起来是同一个问题,不定时随机出现的

creator 2.1.0, 这个是iphone8出现的堆栈,iphonex也会

0 AGXMetalA9 0x0000000206be7000 + 274556
1 AGXMetalA9 0x0000000206be7000 + 192364
2 AGXMetalA9 0x0000000206be7000 + 188828
3 AGXMetalA9 0x0000000206be7000 + 181672
4 AppleMetalGLRenderer gldModifyTexSubImage + 1920
5 GLEngine _glTexImage2D_Exec + 1688
6 OpenGLES glTexImage2D + 88
7 cs-zzqp JSB_glTexImage2DRegistry(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) + 1204
8 JavaScriptCore long long JSC::APICallbackFunction::callJSC::JSCallbackFunction(JSC::ExecState*) + 352
9 JavaScriptCore _llint_entry + 90280
10 JavaScriptCore _llint_entry + 82820
11 JavaScriptCore _llint_entry + 82820
12 JavaScriptCore _llint_entry + 82820
13 JavaScriptCore _llint_entry + 82820
14 JavaScriptCore _llint_entry + 82820
15 JavaScriptCore _llint_entry + 82820
16 JavaScriptCore _llint_entry + 82820
17 JavaScriptCore _llint_entry + 82820
18 JavaScriptCore _llint_entry + 82980
19 JavaScriptCore _llint_entry + 82980
20 JavaScriptCore _llint_entry + 82980
21 JavaScriptCore _llint_entry + 82980
22 JavaScriptCore _llint_entry + 82980
23 JavaScriptCore _llint_entry + 82980
24 JavaScriptCore _llint_entry + 82820
25 JavaScriptCore _llint_entry + 82980
26 JavaScriptCore _llint_entry + 82980
27 JavaScriptCore _llint_entry + 82820
28 JavaScriptCore _llint_entry + 82820
29 JavaScriptCore _llint_entry + 82980
30 JavaScriptCore _llint_entry + 82980
31 JavaScriptCore _llint_entry + 82980
32 JavaScriptCore _llint_entry + 82820
33 JavaScriptCore _llint_entry + 82820
34 JavaScriptCore _llint_entry + 82820
35 JavaScriptCore _llint_entry + 82820
36 JavaScriptCore _llint_entry + 82820
37 JavaScriptCore _llint_entry + 82820
38 JavaScriptCore _vmEntryToJavaScript + 268
39 JavaScriptCore JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 424
40 JavaScriptCore JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 188
41 JavaScriptCore JSObjectCallAsFunction + 376
42 cs-zzqp se::Object::call(std::__1::vector<se::Value, std::__1::allocatorse::Value > const&, se::Object*, se::Value*) + 152
43 cs-zzqp cocos2d::EventDispatcher::dispatchTickEvent(float) + 228
44 cs-zzqp -[MainLoop doCaller:] + 172

这个问题最后修复了没,我按上面的修复了websocket spine log问题。可是依然出现

我们ios8%呢