JSObjectRef root unroot gc问题

厉害了,如果检测到释放,那一定就是被释放了,能定位下释放时的堆栈吗?按理是同一线程,可以看出是什么原因释放的,我们这边试试能捕捉到这个崩溃不。

这个没测试了
没有在myJSTypedArrayBytesDeallocator这个函数里面打过断点,只是打了log输出free的地址
个人感觉像是js那边在gc
一个原因是因为输出这个地址free的log的时候,还会连续输出很多个其他地址free的log,像是释放了很多资源
另一个原因是因为这个bug出现的概率很低可能是要刚好赶上js gc的时机
只是猜测,oc和js交互这块儿确实是不太懂

根据这个猜测,我试了一下先root一下能不能临时解决问题,目前看像是解决了

重现这个崩溃需要找性能比较差内存比较小的设备会更容易点儿
最终大部分是挂在glTexImage2D那里了

@panda iOS版本,5%-10%概率随机crash的问题,管一下吧。别做了小游戏就不管原生app了

2.0.5 ios原生,报了很多jsb_global_load_image崩溃


下个项目准备用unity了,cocos现在都不管原生了

我这样改了一下

请问下是否改动过cocos2dx-lite的代码?可以尝试修改这个代码,如果问题依然存在,请尽量把使用的内存上限控制在IOS设备可接受范围,避免内存回收导致的崩溃。

在报这个崩溃之前没改过cocos2dx-lite jsc这块代码。现在也仅仅是改了global_load_image这里。
我先观察线上版本还有没类似崩溃,然后再试试你说的这个修改

1赞

我们在 2.0.10 和 2.1.1 里面修复了大量的原生崩溃问题。这里描述的问题应该已经修复了,详见 https://github.com/cocos-creator/cocos2d-x-lite/pull/1716

但是2.0.10 beta1在IOS native上还是有出现奔溃啊

大佬,改了之后崩溃降低了么。。。我这里的项目情况是data转成Uint8Array之后,然后js调用data时,发现数据不一致,之后应该就闪退了。我自己4台机器自动挂机一天时间,才出现一次。应该是data携带的数据被释放了。

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

PR 链接 404

https://github.com/cocos-creator/cocos2d-x-lite/pull/1744

这个根本就没改好!jsb_global_load_image

这个修改没有解决问题,只是降低崩溃概率。这个问题是由 JSC 过早GC TypedArray 对象导致的,目前能采取的解决方法就是使用 V8 替代 JSC。 可以尝试在 2.1+ , iOS 上使用 v8。 @qq317942417

+1 ,我们费了好大精力从 1.10 升到了 2.2.2。发现 crash 率还更高了……

iOS 上的这个报错 2.1.3 版本已经解决了。2.2.2 如果还有问题的话,唯一的可能是 iPhone5 等 32 位老机器?
麻烦重新发个帖子吧,非常抱歉!