2014-01-16 48 views
0

我的iPad應用程序中有一個側面板視圖(如側面抽屜),其中包含具有2個選項卡的tabbar。這個視圖超出了ipad可見的屏幕,並且一旦我們從左側拉出它就會變得可見。這會在應用程序啓動時始終進行初始化。它主要在iPad 4機型上隨機在iOS 7.0.3和7.0.4上崩潰。在調試器被連接時,我無法在調試模式下重現它,並且在發佈版本上重現頻率爲1%或更低。無法找到TabBar上隨機崩潰的根本原因

它不會是一個iOS問題,但任何猜測或任何人面臨和解決類似的問題?

Crash report: 

Hardware Model:  iPad3,4 
Code Type:   ARM (Native) 
OS Version:   iOS 7.0.4 (11B554a) 

Crash report: 
Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Triggered by Thread: 12 

Thread 0: 
0 libsystem_kernel.dylib   0x38d7ebb4 syscall_thread_switch + 8 
1 libsystem_platform.dylib  0x38df349c _os_lock_handoff_lock_slow + 48 
2 libsystem_malloc.dylib   0x38db90f8 szone_free_definite_size + 328 
3 libRIP.A.dylib     0x2e4ffb72 ripc_ReleaseClipState + 34 
4 libRIP.A.dylib     0x2e503438 ripc_EndLayer + 80 
5 CoreGraphics     0x2e1c25e8 CGContextEndTransparencyLayer + 36 
6 UIKit       0x309e4d2a -[UIImage(TabBarItemImages) _tabBarItemImageWithTintColor:selected:metrics:style:forScreenScale:] + 902 
7 UIKit       0x309e5070 -[UIImage(TabBarItemImages) _unselectedTabBarItemImageWithTintColor:metrics:style:forScreenScale:] + 36 
8 UIKit       0x309e4748 -[UITabBarItem(Static) _updateImageWithTintColor:isSelected:getImageOffset:] + 552 
9 UIKit       0x309e414c -[UITabBarItem(Static) _createViewForTabBar:showingBadge:withTint:idiom:] + 956 
10 UIKit       0x309e3d82 -[UITabBarItem(Static) _createViewForTabBar:showingBadge:idiom:] + 34 
11 UIKit       0x309e0028 -[UITabBarItem(Static) _updateViewForIdiom:positionItems:] + 156 
12 UIKit       0x309e74ca -[UITabBar(Static) _configureItems:] + 402 
13 UIKit       0x309e6b7e -[UITabBar(Static) _positionTabBarButtons:ignoringItem:] + 1270 
14 UIKit       0x309e3b38 -[UITabBar setItems:animated:] + 1352 
15 UIKit       0x309e3522 -[UITabBarController _rebuildTabBarItemsAnimated:] + 798 
16 UIKit       0x309e7a74 -[UITabBarController _setSelectedViewController:] + 72 
17 UIKit       0x308cdcf2 +[UIView(Animation) performWithoutAnimation:] + 70 
18 UIKit       0x309eb470 -[UITabBarController _selectDefaultViewControllerIfNecessaryWithAppearanceTransitions:] + 216 
19 UIKit       0x309ea8e6 -[UITabBarController viewWillAppear:] + 130 
20 UIKit       0x308d66fa -[UIViewController _setViewAppearState:isAnimating:] + 342 
21 CoreFoundation     0x2e080800 __53-[__NSArrayI enumerateObjectsWithOptions:usingBlock:]_block_invoke + 48 
22 CoreFoundation     0x2e07a21a -[__NSArrayI enumerateObjectsWithOptions:usingBlock:] + 218 
23 UIKit       0x308d6876 -[UIViewController _setViewAppearState:isAnimating:] + 722 
24 UIKit       0x30a4ccfa -[UINavigationController _startCustomTransition:] + 842 
25 UIKit       0x3096aa12 -[UINavigationController _startDeferredTransitionIfNeeded:] + 414 
26 UIKit       0x3096a81c -[UINavigationController __viewWillLayoutSubviews] + 40 
27 UIKit       0x3096a7b4 -[UILayoutContainerView layoutSubviews] + 180 
28 UIKit       0x308bc34e -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 342 
29 QuartzCore      0x3054293e -[CALayer layoutSublayers] + 138 
30 QuartzCore      0x3053e162 CA::Layer::layout_if_needed(CA::Transaction*) + 346 
31 QuartzCore      0x3053dff4 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 12 
32 QuartzCore      0x3053da08 CA::Context::commit_transaction(CA::Transaction*) + 224 
33 QuartzCore      0x3053d81a CA::Transaction::commit() + 310 
34 QuartzCore      0x30537548 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 52 
35 CoreFoundation     0x2e102f66 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18 
36 CoreFoundation     0x2e1008f2 __CFRunLoopDoObservers + 282 
37 CoreFoundation     0x2e100c3e __CFRunLoopRun + 734 
38 CoreFoundation     0x2e06b46c CFRunLoopRunSpecific + 520 
39 CoreFoundation     0x2e06b24e CFRunLoopRunInMode + 102 
40 GraphicsServices    0x32d722e6 GSEventRunModal + 134 
41 UIKit       0x30920840 UIApplicationMain + 1132 
42 MyApp      0x0006b5f2 0x64000 + 30194 
43 libdyld.dylib     0x38cdaab4 start + 0 


Thread 12 Crashed: 
0 libsystem_kernel.dylib   0x38d911fc __pthread_kill + 8 
1 libsystem_pthread.dylib   0x38df8a4e pthread_kill + 54 
2 libsystem_c.dylib    0x38d42082 __abort + 74 
3 libsystem_c.dylib    0x38d42034 abort + 84 
4 libsystem_malloc.dylib   0x38dbf758 szone_error + 312 
5 libsystem_malloc.dylib   0x38dbf9d4 free_list_checksum_botch + 24 
6 libsystem_malloc.dylib   0x38dba1a4 tiny_free_list_remove_ptr + 76 
7 libsystem_malloc.dylib   0x38db9770 szone_free_definite_size + 1984 
8 libsystem_blocks.dylib   0x38cf7ac2 _Block_release + 214 
9 libdispatch.dylib    0x38ccae76 _dispatch_queue_drain + 370 
10 libdispatch.dylib    0x38cc7f8e _dispatch_queue_invoke + 38 
11 libdispatch.dylib    0x38ccb742 _dispatch_root_queue_drain + 74 
12 libdispatch.dylib    0x38ccb9c0 _dispatch_worker_thread2 + 52 
13 libsystem_pthread.dylib   0x38df5dfc _pthread_wqthread + 296 
14 libsystem_pthread.dylib   0x38df5cc0 start_wqthread + 4 

在類似情況下的另一種隨機崩潰:

Thread 0 Crashed: 
0 CoreFoundation      0x311e9728 -[__NSDictionaryM objectForKey:] + 100 
1 UIKit        0x33a3e855 -[UILabel _setFont:] + 209 
2 UIKit        0x33b5a411 -[UITabBarButton initWithImage:selectedImage:label:withInsets:] + 293 
3 UIKit        0x33b59223 -[UITabBarItem(Static) _createViewForTabBar:showingBadge:withTint:idiom:] + 1171 
4 UIKit        0x33b58d87 -[UITabBarItem(Static) _createViewForTabBar:showingBadge:idiom:] + 39 
5 UIKit        0x33b5502d -[UITabBarItem(Static) _updateViewForIdiom:positionItems:] + 161 
6 UIKit        0x33b5c4cf -[UITabBar(Static) _configureItems:] + 407 
7 UIKit        0x33b5bb83 -[UITabBar(Static) _positionTabBarButtons:ignoringItem:] + 1275 
8 UIKit        0x33b58b3d -[UITabBar setItems:animated:] + 1357 
9 UIKit        0x33b58527 -[UITabBarController _rebuildTabBarItemsAnimated:] + 803 
10 UIKit        0x33b5ca79 -[UITabBarController _setSelectedViewController:] + 77 
11 UIKit        0x33a42cf5 +[UIView(Animation) performWithoutAnimation:] + 73 
12 UIKit        0x33b60475 -[UITabBarController _selectDefaultViewControllerIfNecessaryWithAppearanceTransitions:] + 221 
13 UIKit        0x33b5f8eb -[UITabBarController viewWillAppear:] + 135 
14 UIKit        0x33a4b6ff -[UIViewController _setViewAppearState:isAnimating:] + 347 
15 CoreFoundation      0x311f5803 __53-[__NSArrayI enumerateObjectsWithOptions:usingBlock:]_block_invoke + 51 
16 CoreFoundation      0x311ef21d -[__NSArrayI enumerateObjectsWithOptions:usingBlock:] + 221 
17 UIKit        0x33a4b87b -[UIViewController _setViewAppearState:isAnimating:] + 727 
18 UIKit        0x33bc1cff -[UINavigationController _startCustomTransition:] + 847 
19 UIKit        0x33adfa17 -[UINavigationController _startDeferredTransitionIfNeeded:] + 419 
20 UIKit        0x33adf821 -[UINavigationController __viewWillLayoutSubviews] + 45 
21 UIKit        0x33adf7b9 -[UILayoutContainerView layoutSubviews] + 185 
22 UIKit        0x33a31353 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 347 
23 QuartzCore       0x336b7943 -[CALayer layoutSublayers] + 143 
24 QuartzCore       0x336b3167 CA::Layer::layout_if_needed(CA::Transaction*) + 351 
25 QuartzCore       0x336b2ff9 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 17 
26 QuartzCore       0x336b2a0d CA::Context::commit_transaction(CA::Transaction*) + 229 
27 QuartzCore       0x336b281f CA::Transaction::commit() + 315 
28 QuartzCore       0x336ac54d CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 57 
29 CoreFoundation      0x31277f69 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 21 
30 CoreFoundation      0x312758f7 __CFRunLoopDoObservers + 287 
31 CoreFoundation      0x31275c43 __CFRunLoopRun + 739 
32 CoreFoundation      0x311e0471 CFRunLoopRunSpecific + 525 
33 CoreFoundation      0x311e0253 CFRunLoopRunInMode + 107 
34 GraphicsServices     0x35ee12eb GSEventRunModal + 139 
35 UIKit        0x33a95845 UIApplicationMain + 1137 
36 SofTestM       0x000545f7 0x4d000 + 30199 

的第二次碰撞是在設置字體的時間

UITabBar-->UITabBarButton->UILabel (of UITabBarButton) _setFont: 
+0

你是否使用GCD編寫過任何代碼?如果是的話,顯示該代碼? – Mani

+0

您可以與我們分享在線程12上運行的代碼嗎? 從它的外觀它試圖釋放一個塊,並由於某種原因失敗。 – Andrew

回答

1

我覺得這個隨機崩潰可能是由於內存泄漏你的申請。如果我錯了,請原諒我。 在你的日誌中可以看到你使用CoreGraphics.Releasing Core Graphics(即使你有ARC)也有點棘手,因爲它不是100%的內存葉證明。那就是它有時需要一段時間才能發佈。 因此,假設你在一個循環中使用核心圖形對象,那麼肯定你的ipad內存將超出界限。