🌚

Kam's Online Notebook


CPPExceptionTerminate Crash(后续)

5 月 27 日,阵雨。

前前后后忙了好些事情,今天应该还是解决不了。

倔头路

按照昨天的思路,利用 fishhook hook 了 NSSetUncaughtExceptionHandler 函数,统计了下非调试状态下,该函数的使用次数。果然有个第三方 SDK 有向系统注册自己的 exception handler:

+[MOBFNotificationCenter _setupCrashLogMonitor]

但跟踪了一下他们的 handler 方法,感觉没啥问题,反汇编做了三个事情:

  • 一个是发出名为 ApplicationCrash 的通知;
  • 二是打印(只留下一个方法调用,实现代码应该是通过条件编译剔除掉了)异常;
  • 三是礼貌地传递异常。

这么看来,我认为这并不是产生前文所描述的「不正常」crash 日志的罪魁祸首。

由于 KSCrash 的接入是公司内部的平台提供的二进制,看不到源码,所以我把最后的希望寄托于两个注册逻辑发生在不同线程导致 racing condition,这样基本可以结案了。可惜跟踪了下注册都发生在主线程。走到倔头路了,还是不能乱立 flag。

EOF

— May 27, 2021