注册 登录
主题 : 悬赏五个以太币(大约一万元),解决一个Crash 【已解决】
级别: 新手上路
UID: 623013
精华: 0
发帖: 57
可可豆: 66 CB
威望: 66 点
在线时间: 30(时)
注册时间: 2017-09-07
最后登录: 2017-11-13
0 楼:  发表于: 2017-09-07 00:28    发自: Web Page
来源于 内存问题 分类

悬赏五个以太币(大约一万元),解决一个Crash 【已解决】   

我这边的iOS App最近开始出现随机的crash,从Fabric上来看,这个crash随机的出现在各个系统,各个设备中。Fabric上给出的这个crash的调用堆栈也有好几个,下面是其中3个调用堆栈。

==========1===============

#0. Crashed: com.apple.main-thread
0??QuartzCore???????????????????? 0x188715730 CALayerGetSuperlayer + 20
1??UIKit??????????????????????????0x188dd6fa0 -[UIView(Hierarchy) superview] + 44
2??UIKit??????????????????????????0x188dd7a88 -[UIView nextResponder] + 108
3??UIKit??????????????????????????0x188e9d99c -[UIResponder _containsResponder:] + 56
4??UIKit??????????????????????????0x188ecfc80 -[UITransitionView transition:fromView:toView:removeFromView:] + 576
5??UIKit??????????????????????????0x188f13238 -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] + 1536
6??UIKit??????????????????????????0x188f12aec -[UITabBarController _setSelectedViewController:] + 360
7??UIKit??????????????????????????0x188fda30c -[UITabBarController _tabBarItemClicked:] + 336
8??UIKit??????????????????????????0x188e11398 -[UIApplication sendAction:to:from:forEvent:] + 96
9??UIKit??????????????????????????0x188fda160 -[UITabBar _sendAction:withEvent:] + 468
10 UIKit??????????????????????????0x188e11398 -[UIApplication sendAction:to:from:forEvent:] + 96
11 UIKit??????????????????????????0x188dfa474 -[UIControl _sendActionsForEvents:withEvent:] + 612
12 UIKit??????????????????????????0x188fd9d98 -[UITabBar(Static) _buttonUp:] + 128
13 UIKit??????????????????????????0x188e11398 -[UIApplication sendAction:to:from:forEvent:] + 96
14 UIKit??????????????????????????0x188dfa474 -[UIControl _sendActionsForEvents:withEvent:] + 612
15 UIKit??????????????????????????0x188e10d34 -[UIControl touchesEnded:withEvent:] + 592
16 UIKit??????????????????????????0x188dcff54 _UIGestureRecognizerUpdate + 8536
17 CoreFoundation???????????????? 0x18431c2a4 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
18 CoreFoundation???????????????? 0x184319230 __CFRunLoopDoObservers + 360
19 CoreFoundation???????????????? 0x184319610 __CFRunLoopRun + 836
20 CoreFoundation???????????????? 0x1842452d4 CFRunLoopRunSpecific + 396
21 GraphicsServices?????????????? 0x18dc9b6fc GSEventRunModal + 168
22 UIKit??????????????????????????0x188e42f40 UIApplicationMain + 1488

======================2=======================

#0. Crashed: com.apple.main-thread
0??QuartzCore???????????????????? 0x18e7ca1d0 CALayerGetSuperlayer + 20
1??UIKit??????????????????????????0x191e4e9d4 -[UIView(UIKitManual) superview] + 128
2??UIKit??????????????????????????0x1915d3a5c -[UIView nextResponder] + 120
3??UIKit??????????????????????????0x19197d620 -[UIResponder _canChangeFirstResponder:toResponder:] + 64
4??UIKit??????????????????????????0x19165c01c -[UIResponder becomeFirstResponder] + 224
5??UIKit??????????????????????????0x19169b118 -[UINavigationController navigationTransitionView:didStartTransition:] + 760
6??UIKit??????????????????????????0x1917758ac -[UINavigationController _startCustomTransition:] + 3852
7??UIKit??????????????????????????0x19168f7bc -[UINavigationController _startDeferredTransitionIfNeeded:] + 676
8??UIKit??????????????????????????0x19168f424 -[UINavigationController __viewWillLayoutSubviews] + 64
9 UIKit??????????????????????????0x19168f388 -[UILayoutContainerView layoutSubviews] + 188
10 UIKit??????????????????????????0x1915d5cc0 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1200
11 QuartzCore???????????????????? 0x18e7c6274 -[CALayer layoutSublayers] + 148
12 QuartzCore???????????????????? 0x18e7bade8 CA::Layer::layout_if_needed(CA::Transaction*) + 292
13 QuartzCore???????????????????? 0x18e7baca8 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32
14 QuartzCore???????????????????? 0x18e73634c CA::Context::commit_transaction(CA::Transaction*) + 252
15 QuartzCore???????????????????? 0x18e75d3ac CA::Transaction::commit() + 504
16 QuartzCore???????????????????? 0x18e75de78 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 120
17 CoreFoundation???????????????? 0x18b4549a8 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
18 CoreFoundation???????????????? 0x18b452630 __CFRunLoopDoObservers + 372
19 CoreFoundation???????????????? 0x18b452a7c __CFRunLoopRun + 956
20 CoreFoundation???????????????? 0x18b382da4 CFRunLoopRunSpecific + 424
21 GraphicsServices?????????????? 0x18cded074 GSEventRunModal + 100
22 UIKit??????????????????????????0x19163dc9c UIApplicationMain + 208

=========3========

#0. Crashed: com.apple.main-thread
0??libobjc.A.dylib????????????????0x18fe4c1a0 objc_retain + 16
1??UIKit??????????????????????????0x1974fba5c -[UIView nextResponder] + 120
2??UIKit??????????????????????????0x1978a45ec -[UIResponder _resignIfContainsFirstResponder] + 156
3??UIKit??????????????????????????0x1974fb76c -[UIView(Hierarchy) _willMoveToWindow:] + 568
4??UIKit??????????????????????????0x197507d88 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 424
5??UIKit??????????????????????????0x197773000 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke_2 + 1556
6??UIKit??????????????????????????0x19750e964 +[UIView(Animation) performWithoutAnimation:] + 104
7??UIKit??????????????????????????0x1976e0950 __53-[_UINavigationParallaxTransition animateTransition:]_block_invoke + 260
8??UIKit??????????????????????????0x1977fd388 +[UIView(Internal) _performBlockDelayingTriggeringResponderEvents:] + 220
9 UIKit??????????????????????????0x1976e0450 -[_UINavigationParallaxTransition animateTransition:] + 1060
10 UIKit??????????????????????????0x19769d818 -[UINavigationController _startCustomTransition:] + 3704
11 UIKit??????????????????????????0x1975b77bc -[UINavigationController _startDeferredTransitionIfNeeded:] + 676
12 UIKit??????????????????????????0x1975b7424 -[UINavigationController __viewWillLayoutSubviews] + 64
13 UIKit??????????????????????????0x1975b7388 -[UILayoutContainerView layoutSubviews] + 188
14 UIKit??????????????????????????0x1974fdcc0 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1200
15 QuartzCore???????????????????? 0x1946ee274 -[CALayer layoutSublayers] + 148
16 QuartzCore???????????????????? 0x1946e2de8 CA::Layer::layout_if_needed(CA::Transaction*) + 292
17 QuartzCore???????????????????? 0x1946e2ca8 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32
18 QuartzCore???????????????????? 0x19465e34c CA::Context::commit_transaction(CA::Transaction*) + 252
19 QuartzCore???????????????????? 0x1946853ac CA::Transaction::commit() + 504
20 UIKit??????????????????????????0x1974f3308 _afterCACommitHandler + 256
21 CoreFoundation???????????????? 0x19137c9a8 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
22 CoreFoundation???????????????? 0x19137a630 __CFRunLoopDoObservers + 372
23 CoreFoundation???????????????? 0x19137aa7c __CFRunLoopRun + 956
24 CoreFoundation???????????????? 0x1912aada4 CFRunLoopRunSpecific + 424
25 GraphicsServices?????????????? 0x192d15074 GSEventRunModal + 100
26 UIKit??????????????????????????0x197565c9c UIApplicationMain + 208



现悬赏大约人民币两千元,求大牛帮忙解决,有意向的可以私信或回复我

我在stackoverflow上也发了。悬赏金由原来的一千人民币提高到了两千人民币,谢谢大家了
https://stackoverflow.com/questions/46086398/ios-random-crash-because-of-memory-corruption


=======更新1=======
谢谢大家积极的参与,有些问题是大家都会问的,所以再次更新一下

1. xcode自带的调试工具,例如memory,leak,instrument,都试过了,没有用,因为不能重现
2. 不是图片的问题,那个问题已经解决过了
3. 这个crash发生在所有我们支持的系统(iOS 8.0及以上)中,以及所有设备中
4. 我们没有定义任何的转场动画
5. UITabBarController是在storyboard文件中定义的,不是在代码中创建的
6. SB文件大多是由XCode 6或7创建的,由于Xcode 8会修改SB文件,所以我们不再用XCode 8编辑任何SB文件
7. 不是有人恶意攻击我们的app

这个悬赏其实已经持续了两周了,只是第一次发在这里,所以一些naive的问题已经排查过一遍了

谢谢各位,请各位继续

=======更新2======
有不少人怀疑是TabBar的问题,我几乎可以确认不是。原因如下,这个app在一个月前的版本中,还是比较稳定的,但是进行了某些改动之后的一个版本出现了这个crash,crash的比例达到了3%,因为这些改动中不包括TabBar,所以相信不会和TabBar相关。

为了近一步排查crash的原因,我们试图部分的回滚,最后在回滚一个storyboard文件之后,这个crash被比例突然降低到了1%(仍然不能接受),这个storyboard文件是在XCode 6或者7的时候创建的,但是用xcode 8打开再保存一下的话,会有一些修改(类似调整了颜色和一些大小),不清楚是否是这些修改造成了crash。

目前还有一些操作无法回滚,我们在这个版本的改动中增加了iPad的支持,所以把原来的Launch Image改成了用Launch screen storyboard的形式。由于Apple store明确规定了不能撤销对iPad的支持,所以这个操作无法回滚。不知道是否是这部分修改造成了这个crash。

现在最大的问题是这个crash无法重现,从fabric的统计来看,大多数用户也只能遇到一次crash,很少有用户能遇到两次的。


谢谢各位,请各位继续,也欢迎各位将本帖转发给别人,你可以与对方平分赏金嘛

========更新3======
我决定将悬赏金由1个以太币提高到5个以太币!!!求版主置顶,求各位扩散啊!

========更新4【已解决】======
这个价值一万元的问题,终于解决了!!!特地把问题的原因分享给大家。

这个问题是因为引入了UILabel可以copy文本的功能,实现方法如下
http://www.jianshu.com/p/b0eb1e88a928

这个方法也是网上提供的大多数的方法,这个方法看上去是没有问题的,确实能够copy,paste。但是在以下两种情况下,会出现crash
1. 长按呼出copy菜单之后,什么都不错,直接返回,会crash,因为没有resign first responder
2. 当用户copy之后,不paste,直接在页面之间跳转,会出现本文所说的crash

我还在尝试更好的的解决方案,谢谢大家
[ 此帖被Athrun911500在2017-11-10 20:35重新编辑 ]

关键词: ios 问题 app 内存
级别: 侠客
状态: 连续签到 - [109天]
UID: 578505
精华: 0
发帖: 171
可可豆: 767 CB
威望: 550 点
在线时间: 336(时)
注册时间: 2016-08-18
最后登录: 2017-11-14
1 楼:  发表于: 2017-09-07 08:33    发自: Web Page
代码呢。。。。。。。。。。
新手上路
级别: 新手上路
UID: 623013
精华: 0
发帖: 57
可可豆: 66 CB
威望: 66 点
在线时间: 30(时)
注册时间: 2017-09-07
最后登录: 2017-11-13
2 楼:  发表于: 2017-09-07 08:50    发自: Web Page
回 1楼(笨笨菜鸟) 的帖子
这个crash对应的堆栈没有显示出来任何和我的代码相关的东西,我不知道给哪一块的代码啊,总不能把代码全放上来吧
级别: 精灵王

状态: 连续签到 - [256天]
UID: 551166
精华: 0
发帖: 865
可可豆: 2382 CB
威望: 1794 点
在线时间: 608(时)
注册时间: 2016-03-17
最后登录: 2017-11-22
3 楼:  发表于: 2017-09-07 09:05    发自: Web Page
崩溃的点描述下,是启动崩溃,还是正运行着,不定时出现的崩溃等等。
向天下所有的女司机道歉,我错了。
级别: 新手上路
UID: 623013
精华: 0
发帖: 57
可可豆: 66 CB
威望: 66 点
在线时间: 30(时)
注册时间: 2017-09-07
最后登录: 2017-11-13
4 楼:  发表于: 2017-09-07 09:14    发自: Web Page
回 3楼(end_cancel) 的帖子
不清楚,我不能重现

从用户返回给服务器的log来开,是启动之后,在任意的位置崩溃的,没有固定的位置,刚才看的数据是16个用户,15个崩溃,所以用户那边也很少能重现出来这个crash
级别: 侠客
状态: 连续签到 - [109天]
UID: 578505
精华: 0
发帖: 171
可可豆: 767 CB
威望: 550 点
在线时间: 336(时)
注册时间: 2016-08-18
最后登录: 2017-11-14
5 楼:  发表于: 2017-09-07 09:17    发自: Web Page
回 2楼(Athrun911500) 的帖子
不知道就只能给全部了,不然。。。。
新手上路
级别: 新手上路
状态: 连续签到 - [3天]
UID: 315563
精华: 0
发帖: 12
可可豆: 27 CB
威望: 22 点
在线时间: 947(时)
注册时间: 2014-05-15
最后登录: 2017-10-09
6 楼:  发表于: 2017-09-07 09:20    发自: Web Page
看下是不是这个问题 https://www.ianisme.com/ios/2409.html
级别: 新手上路
UID: 623013
精华: 0
发帖: 57
可可豆: 66 CB
威望: 66 点
在线时间: 30(时)
注册时间: 2017-09-07
最后登录: 2017-11-13
7 楼:  发表于: 2017-09-07 09:33    发自: Web Page
Re:回 2楼(Athrun911500) 的帖子
引用
引用第5楼笨笨菜鸟于2017-09-07 09:17发表的 回 2楼(Athrun911500) 的帖子 :
不知道就只能给全部了,不然。。。。


无法给全部,首先是公司的代码,我不能轻易发出来,其次代码量非常大

你要一部分的话,我倒是可以给,前提是你告诉我要看哪一部分
级别: 新手上路
UID: 623013
精华: 0
发帖: 57
可可豆: 66 CB
威望: 66 点
在线时间: 30(时)
注册时间: 2017-09-07
最后登录: 2017-11-13
8 楼:  发表于: 2017-09-07 09:34    发自: Web Page
引用
引用第6楼death_glory于2017-09-07 09:20发表的  :
看下是不是这个问题 https://www.ianisme.com/ios/2409.html


不是这个问题,这个我之前遇到过,早就解决了
级别: 侠客
状态: 连续签到 - [4天]
UID: 283088
精华: 0
发帖: 98
可可豆: 153 CB
威望: 150 点
在线时间: 766(时)
注册时间: 2013-12-21
最后登录: 2017-11-22
9 楼:  发表于: 2017-09-07 09:36    发自: Web Page
你UITabBarController 做了转场动画了?看着像是动画的时候挂了
节奏·节奏    永不停歇的旋律
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部