5 月 27 日,阵雨。
前前后后忙了好些事情,今天应该还是解决不了。
按照昨天的思路,利用 fishhook hook 了 NSSetUncaughtExceptionHandler
函数,统计了下非调试状态下,该函数的使用次数。果然有个第三方 SDK 有向系统注册自己的 exception handler:
+[MOBFNotificationCenter _setupCrashLogMonitor]
但跟踪了一下他们的 handler 方法,感觉没啥问题,反汇编做了三个事情:
这么看来,我认为这并不是产生前文所描述的「不正常」crash 日志的罪魁祸首。
由于 KSCrash 的接入是公司内部的平台提供的二进制,看不到源码,所以我把最后的希望寄托于两个注册逻辑发生在不同线程导致 racing condition,这样基本可以结案了。可惜跟踪了下注册都发生在主线程。走到倔头路了,还是不能乱立 flag。
— May 27, 2021