Application crashes very rarely with UI update on secondary thread

1

It is really very strange for me as my app is working fine at debug mode & when tried by tester with release build RARELY it gives crash. What I have understood from console log & crash log is that somewhere UI is trying to update from secondary thread but NOT always.

At crash point my console log says,

MyApp[715] <Warning>: CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.May 21 10:51:25 
MyApp[715] <Warning>: bool _WebTryThreadLock(bool), 0x1e1dd280: Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...May 21 10:51:25 
MyApp[715] <Notice>: 1   0x38b048f7 WebThreadLock

& device crash logs crash thread description & error type are as below

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xbbadbeef 
Crashed Thread:  15 
.
.
.
Thread 15 Crashed: 0  
WebCore                         0x38b03944_WebTryThreadLock(bool) + 164 1  
WebCore                         0x38b048f2 WebThreadLock + 62 2  
UIKit                           0x374424f6 -[UIWebTiledView layoutSubviews] + 38 3   
UIKit                           0x374424c6 -[UIWebDocumentView layoutSubviews] + 106 4  
UIKit                           0x373bb7fe -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 254 5 
QuartzCore                      0x30e92d5e -[CALayer layoutSublayers] + 210 6  
QuartzCore                      0x30e928fc CA::Layer::layout_if_needed(CA::Transaction*) + 456 7 
QuartzCore                      0x30e93830 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 12 8  
QuartzCore                      0x30e93216 CA::Context::commit_transaction(CA::Transaction*) + 234 9   
QuartzCore                      0x30e93024 CA::Transaction::commit() + 312 10 
QuartzCore                      0x30ed9df6 CA::Transaction::release_thread(void*) + 166 11  libsystem_c.dylib               0x31150128 _pthread_tsd_cleanup + 172 12  
libsystem_c.dylib               0x3114fdfe _pthread_exit + 114 13 
libsystem_c.dylib               0x31169160 pthread_exit + 24 14 
Foundation                      0x358bf226 +[NSThread exit] + 6 15 
Foundation                      0x35936696 __NSThread__main__ + 998 16 
libsystem_c.dylib               0x3115d30e _pthread_start + 306 17 
libsystem_c.dylib               0x3115d1d4 thread_start + 4 

Thread 15 crashed with ARM Thread State (32-bit):     r0: 0xbbadbeef    r1: 0x00000000      r2: 0x030ba404      r3: 0x00000001     r4: 0x1e1dd280    r5: 0x3b4cacc0      r6: 0x00000000      r7: 0x030baa74     r8: 0x00000028    r9: 0x00006200     r10: 0x00000000     r11: 0x030bbc70     ip: 0x3b4061e0    sp: 0x030baa6c      lr: 0x38b0393b      pc: 0x38b03944   cpsr: 0x60000030

I am not very sure about this fix as i have not yet reproduced it at my end. If anyone at-least could help me out for reproducing then it would be great help :)

iphone
ios
ipad
asked on Stack Overflow May 23, 2013 by Ameer • edited May 23, 2013 by Nicholas Smith

2 Answers

1

you do GUI changes in background thread but according to apple you are not changes in GUI in background thread...so use performSelectorOnMainThread to GUI change

answered on Stack Overflow May 23, 2013 by Sumit Mundra
1
This may be a result of calling to UIKit from a secondary thread.

Update the user interface on the main thread.In any of the case for doing UI updates in Separate thread reason will be invalid. One Option is Grand Central Dispatch as it do things in background threads and no crash at all.

answered on Stack Overflow May 23, 2013 by Buntylm • edited May 23, 2013 by Buntylm

User contributions licensed under CC BY-SA 3.0