crash
rhythmkay
这个作者很懒,什么都没留下…
展开
-
记一次PHP与自动释放池的内存释放的坑
使用多线程遍历或操作集合对象的时候,务必要注意内存的及时释放,否则一不小心就触发内存峰值而闪退了。最近新版本发布后,有较多用户反馈闪退;经过部分走访用户初步得出结论是内存闪退,而且和PHPLibrary相关修改有关;联系用户联系了部分用户,捞取到较多日志;确定原因基本是内存闪退,发生闪退时浏览器占用了1.3G左右的内存,超过了内存限制而被jetsam杀死;这个不太合理,我们基本不会这样疯狂申...原创 2019-01-18 14:51:15 · 1928 阅读 · 0 评论 -
一次_os_object_retain的crash
_os_object_retain一看挂在dispatch里,想当然都会认为难道系统有bug了,但是问题不都是靠瞎猜的,还是有了分析才好下结论。1.前言最近新版本刚上线就发现少量特别的新增crash,堆栈如下0 libdispatch.dylib 0x000000018fc296e0 __os_object_retain$VARIANT$mp + 721 mttlite 0x0000000...原创 2019-01-18 14:54:13 · 545 阅读 · 0 评论 -
一次cache_getImp野指针排查
1.前言最近线上突然多了一些crash,类型是SEGV_ACCER,一看就认为是对象野指针了,基本都是多线程读写导致的;但是仔细再一看crash堆栈,不是平常的objc_xxxx,而是 cache_getImp 这就有点怪了,和平常的objc_msgSend或objc_retain等挂的不太一样;我们实际的业务代码挂在如下[delegate performSelector:didRecei...原创 2019-01-18 14:57:00 · 923 阅读 · 2 评论 -
汇编分析一次系统控件系统栈的crash
系统控件和系统堆栈的crash初看,总以为不好解决,本文通过一步步推导来分析定位,最终找到crash是应用堆栈触发的一、问题描述最新线上新版本遇到了一个大规模的crash,也不太好复现,crash堆栈大概如下0 CoreFoundation 0x00000001819f6d8c ___exceptionPreprocess + 2281 libobjc.A.dylib 0x00000001...原创 2019-01-18 15:01:17 · 793 阅读 · 0 评论 -
__block不适合多线程并发
objc的很多设计,从底层实现上都不完全是线程安全的,这也导致在一些极端的并发情况下,会引起竞争导致的内存访问错误问题。之前分析过_weak的设计不是多线程安全的,最近又踩坑了_block,发现这个居然也不是线程安全。当然这也不是说 _block, _weak 这些不要用了,而是说在比较频繁创建释放且有多线程使用的情况下,不要用 ___block, _weak修饰,因为他们的确不是线程安全的...原创 2019-04-24 21:07:47 · 1121 阅读 · 0 评论 -
Crash与信号
文章目录什么是信号信号如何产生信号与多线程Mach异常如何转为signal如何捕获信号关于SA_ONSTACK常见Crash信号SIGBUS VS SIGSEGV如何触发SIGBUS ?参考什么是信号信号(signal)是一种XPC通信方式。signal是一个4字节的无符号整形数字,在iOS/OSX中定义了31个已知的信号;在Unix系统中,crash仅仅是singal触发的一个行为。si...原创 2019-05-16 21:37:15 · 1053 阅读 · 0 评论 -
Crash优化与建议
文章目录一、Crash与信号1.1 Crash是如何产生的1.1.1 signal1.1.2 signal处理流程1.1.3 signal捕获1.2 Crash日志简析二、Crash优化思路2.1 分析问题2.2 可复现的crash2.3 难复现的crash2.3.1 根据信号分析2.3.2 根据exception信息提示2.3.3 根据异常地址2.3.4 根据寄存器信息2.3.5 根据附加信息2...原创 2019-06-27 22:11:34 · 2819 阅读 · 0 评论