0 MyApp 0x000833a3 +[TFCrashHandler backtrace] + 26
崩溃产生于+[TFCrashHandler backtrace]
+ 26;来自落在该符号位置的任何指令 + 26 字节。
如果那确实是堆栈跟踪的底部并且它在那里崩溃了,那么TCrashHandler
掩盖了真正的崩溃。真正的崩溃看起来是上面的几帧。
1 MyApp 0x000836bd TFSignalHandler + 28
TFSignalHandler 就是所谓的+backtrace。
2 libsystem_c.dylib 0x33eac727 _sigtramp + 34
呃……信号蹦床。应用程序收到信号,并且蹦床被设置为调用 TFSignalHandler()。
在某些情况下,可能会在随机线程上调用信号处理程序。 IE。这个特定的崩溃与解析器无关而与其他地方的崩溃有关的可能性很小。然而,在不了解有关解析器的更多信息的情况下,我怀疑它是否针对恶意输入进行了强化(这肯定会导致这样的崩溃)。
3 ??? 0x00000002 0x0 + 2
堆栈无法解码。忽略。无意义的。最好的情况;编译器优化的后果。最坏的情况下;有人在堆栈上大便,而回溯机制无法弄清楚发生了什么(极不可能——通常,堆栈大便会溅到阻止完整回溯的程度)。
4 MyApp 0x000803f1 msgpack_unpack_next + 112
噢...棘手。有人正在使用 C 来解析东西。它崩溃了。从入口点到函数的任何指令都是 112 字节boom。但是,事实并非如此,因为它调用了信号处理程序并由信号处理程序处理;这仍然是一个boom但信号处理程序已经有效地销毁了额外的法医证据。
“trickzy”评论提到,针对一大堆 C 的优化编译器最终可能会崩溃框架,以至于崩溃可能发生在远低于此框架的函数中。
5 MyApp 0x0007faeb +[MessagePackParser parseData:] + 74
MessagePack Parser 正在解析时出现了严重错误。
6 MyApp 0x0007f84b -[NSData(NSData_MessagePack) messagePackParse] + 26
7 MyApp 0x000254c3 +[Http get:params:cacheMins:msgPack:complete:] + 146
啊……是的……有人从 HTTP 中抓取了一些数据,但数据格式错误,导致崩溃。
底线;解析器收到虚假输入并崩溃。有一个信号处理程序试图通过创建回溯来提供帮助,但显然并没有真正透露更多信息。一个长期的替代方案是,信号是在其他地方生成的,并且随机选择该线程来处理它 - 如果您能够一致地重新创建此崩溃,则不太可能出现随机线程信号情况。
除非您捕获了输入数据或者可以以某种方式猜测 msgpack_unpack_next() 如何崩溃,否则如果不提供更多信息,您就运气不佳。