为了解决 A12 及以上设备 iOS 15 系统自旋锁恐慌引起的重启问题,
opa334 操碎了心。
说说近期的一些情况。
说明:
本期文章,蓝色文字,点击就可以阅读详细内容。
▍opa334
今日,
opa334 发文,最近的一些研究心得:
在断断续续尝试解决 iOS 15 arm64e 上的自旋锁恐慌错误(竞态条件)近两年后,我终于成功地按需触发了这个错误。
附图中,opa334 做了高亮标注。
opa334:
利用这一点,我可以验证我对该问题的所有最新假设都是正确的:D
opa334 表示:
我认为有一种方法可以彻底解决这些问题。
即使无法对 DSC 页面进行布线,但这涉及到一个相当复杂的 dyld 钩子。基本上,我需要破坏所有进程共享同一共享区域页表的优化方案。这样做会使内存消耗情况更糟一些,但至少系统应该是稳定的。
▍关于随机重启
说说多巴胺越狱后出现自旋锁恐慌引起随机重启的问题。
会出现问题的范围:
A12 及以上设备 iOS 15 系统。
不会出现问题的范围:
1,iOS 16 及以上系统。
2,A11 及以下设备。
2023年5月份,
opa334 在发布多巴胺越狱第一个正式版的时候,就表示:
多巴胺修复了 Fugu15 Max 的所有已知问题,
除了自旋锁恐慌 Spinlock Panic。
Spinlock
自旋锁
是一种基于忙等待的锁机制,通常用于操作系统内核中的多线程程序中,以实现对共享资源的访问控制。它的实现方式是当一个线程需要访问被自旋锁保护的共享资源时,如果锁已经被其他线程占用,那么该线程就会不断地循环检查锁的状态,直到锁被释放为止。
Spinlock Panic
自旋锁恐慌引起随机重启
是因为自旋锁而导致的内核崩溃,设备重启。
举个例子,
两个进程都需要使用一个文件,
A 进程使用的时候锁定文件,B进行就不能使用;
B 使用的时候锁定文件,A就不能使用。
如此循环。
当B进程在等待使用的过程超时了,发生内核崩溃,就是自旋锁恐慌。
opa334 表示,
不知道是什么原因造成的。
自旋锁恐慌应该是系统本身的问题,
只是越狱后,安装了插件,增加了发生自旋锁恐慌的几率。
当自旋锁恐慌发生,
可能会导致系统的性能急剧下降,出现卡住。
甚至导致系统崩溃,直接出现重启。
当出现无缘无故的重启,
怎样查看是不是自旋锁恐慌引起的呢?
打开手机设置 → 隐私与安全性→ 分析与改进 → 分析数据,
在日志中,
搜索日期,例如:05-03,
或者搜索:panic,
可以找到 panic-full-开头的文件,点击进入查看,
在文件中,panicString 一栏,
可以看到明显的 Spinlock 字样,
这个情况的重启就是遇到自旋锁恐慌引起的了。
每个日志文件,标注了具体时间,可以知道自旋锁恐慌发生的准确时间。
历史图片
当遇到自旋锁恐慌引起重启,
可以根据个人情况,排查一下插件。
卸载一些或许会引起问题的插件,减少触发随机重启的频率。
为了解决 A12 及以上设备 iOS 15 系统自旋锁恐慌引起的重启问题,
opa334 断断续续研究两年多了,现在还为之努力。
目前 opa334 可以按需触发自旋锁恐慌,似乎找到了一些解决的方法。
截稿时,op334 尚未发布新版,大家请耐心等待。
大家留言说说看,
具体是多少系统呢?使用多巴胺什么版本呢?越狱后稳定吗?
遇到过无缘无故重启的问题吗?