crash at Rb_tree_rebalance_for_erase in libbootstrap
noodle1983 opened this issue · 2 comments
noodle1983 commented
两三个项目碰到了这个问题,Unity版本含2017和2019
堆栈如下图(来自sin,thx)
有几个怀疑的点:
- 多线程锁的问题,日志中发现在signal处理函数中,std::mutex会失效,全改成了pthread,看起来没问题
- std::map 和 static link的问题, 把map换成了c版的,hash函数直接cache size取余。
新增了个分支, 做了些改动: https://github.com/noodle1983/UnityAndroidIl2cppPatchDemo-libboostrap/tree/crash_in_map_test
来自sin的反馈,暂时没有崩溃;另外还有加载场景卡死的问题,无日志,原因不明,未深入。
求测。
noodle1983 commented
崩溃和加载场景卡死的问题, 已合并到库的master分支,部分机型比较容易出现问题,求测。
改动:
- 额外变量存文件系统,去掉mutex,怀疑用户空间的mutex在hook调用里面可能会和系统时钟中断有冲突。
- zip alignment,这个改动可能是无效的,因为测试工作量太大,没回滚
- 不保存old_xxx函数,应该不相关
- 不主动dlopen libil2cpp。
分支:
https://github.com/noodle1983/UnityAndroidIl2cppPatchDemo-libboostrap/tree/master
noodle1983 commented
so库换了spin lock,可能会修正这个问题,并大大优化性能。 这个分支用回global data:https://github.com/noodle1983/UnityAndroidIl2cppPatchDemo-libboostrap/tree/mutex_in_fclose, 求测。