我的iPad應用程序有時會掛起。它看起來像主線程與另一個線程僵局,但不知道爲什麼。任何想法是什麼導致這個以及如何調試?啓動時iOS iPad GUI死鎖。在啓動屏幕上掛起
僅供參考我的應用程序最初是一個分割視圖控制器,左側是一個listview,右側是一個webview。如果我以隱藏列表視圖的縱向模式啓動,則不會發生問題。另外,如果我在不在主線程上時禁用了我的單元格渲染,應用程序不會掛起,但單元格顯示爲黑色矩形。
謝謝!
這是我的主線程。在這個堆棧上的所有代碼是蘋果框架...
#0 0x971c0142 in semaphore_wait_signal_trap()
#1 0x971c5c06 in pthread_mutex_lock()
#2 0x02685903 in CGFontCacheLock()
#3 0x02685869 in CGGlyphLockLockGlyphBitmaps()
#4 0x0a90bb5b in ripc_RenderGlyphs()
#5 0x0a9199f8 in ripc_DrawGlyphs()
#6 0x0268464c in draw_glyphs()
#7 0x02683e97 in CGContextShowGlyphsWithAdvances()
#8 0x035aafba in WebCore::Font::drawGlyphs()
#9 0x035aaaf5 in WebCore::Font::drawGlyphBuffer()
#10 0x035aa81a in WebCore::Font::drawSimpleText()
#11 0x035aa4c0 in drawAtPoint()
#12 0x035a9d5c in -[NSString(WebStringDrawing) _web_drawAtPoint:forWidth:withFont:ellipsis:letterSpacing:includeEmoji:]()
#13 0x0043f632 in -[NSString(UIStringDrawing) drawAtPoint:forWidth:withFont:lineBreakMode:letterSpacing:includeEmoji:]()
#14 0x0043f325 in -[NSString(UIStringDrawing) drawAtPoint:forWidth:withFont:lineBreakMode:]()
#15 0x0055ba70 in -[UILabel _drawTextInRect:baselineCalculationOnly:]()
#16 0x00559178 in -[UILabel drawTextInRect:]()
#17 0x0045418f in -[UIView(CALayerDelegate) drawLayer:inContext:]()
#18 0x02a708d2 in -[CALayer drawInContext:]()
#19 0x02a704b0 in backing_callback()
#20 0x02a6fd52 in CABackingStoreUpdate()
#21 0x02a6f01d in -[CALayer _display]()
#22 0x02a6eac7 in CALayerDisplayIfNeeded()
#23 0x02a609e1 in CA::Context::commit_transaction()
#24 0x02a60732 in CA::Transaction::commit()
#25 0x00427556 in -[UIApplication _reportAppLaunchFinished]()
#26 0x0042dd3e in -[UIApplication handleEvent:withNewEvent:]()
#27 0x004294f7 in -[UIApplication sendEvent:]()
#28 0x004311d8 in _UIApplicationHandleEvent()
#29 0x033f817c in PurpleEventCallback()
#30 0x02bec89c in CFRunLoopRunSpecific()
#31 0x02beb8a8 in CFRunLoopRunInMode()
#32 0x00427221 in -[UIApplication _run]()
#33 0x0042f372 in UIApplicationMain()
而另一個線程呈現我的列表視圖中的單元格。 MyFancyPantsCell & ABTableViewCellView是我的課程。
#0 0x971c0142 in semaphore_wait_signal_trap()
#1 0x971c5c06 in pthread_mutex_lock()
#2 0x02685903 in CGFontCacheLock()
#3 0x02685869 in CGGlyphLockLockGlyphBitmaps()
#4 0x0a90bb5b in ripc_RenderGlyphs()
#5 0x0a9199f8 in ripc_DrawGlyphs()
#6 0x0268464c in draw_glyphs()
#7 0x02683e97 in CGContextShowGlyphsWithAdvances()
#8 0x035aafba in WebCore::Font::drawGlyphs()
#9 0x035aaaf5 in WebCore::Font::drawGlyphBuffer()
#10 0x035aa81a in WebCore::Font::drawSimpleText()
#11 0x035aa4c0 in drawAtPoint()
#12 0x035a9d5c in -[NSString(WebStringDrawing) _web_drawAtPoint:forWidth:withFont:ellipsis:letterSpacing:includeEmoji:]()
#13 0x0043f632 in -[NSString(UIStringDrawing) drawAtPoint:forWidth:withFont:lineBreakMode:letterSpacing:includeEmoji:]()
#14 0x0043f381 in -[NSString(UIStringDrawing) drawAtPoint:withFont:]()
#15 0x000635ec in -[SymbolCellPainter drawContentView:selected:editing:frame:]
#16 0x000452d0 in -[MyFancyPantsCell drawContentView:]
#17 0x00044624 in -[ABTableViewCellView drawRect:]
#18 0x0045418f in -[UIView(CALayerDelegate) drawLayer:inContext:]()
#19 0x02a708d2 in -[CALayer drawInContext:]()
#20 0x02a704b0 in backing_callback()
#21 0x02a6fd52 in CABackingStoreUpdate()
#22 0x02a6f01d in -[CALayer _display]()
#23 0x02a6eac7 in CALayerDisplayIfNeeded()
#24 0x02a609e1 in CA::Context::commit_transaction()
#25 0x02a60732 in CA::Transaction::commit()
#26 0x02a9e04f in CA::Transaction::release_thread()
#27 0x971f61e3 in _pthread_tsd_cleanup()
#28 0x971f5df6 in _pthread_exit()
#29 0x00183bf2 in +[NSThread exit]()
#30 0x00183b5b in __NSThread__main__()
#31 0x971ed81d in _pthread_start()
#32 0x971ed6a2 in thread_start()
這是一個可疑的死鎖,因爲它看起來像他們都在同一個對象上等待(除非有多個字體緩存,這不應該是)。但是UIGraphics */NSString繪圖/ UIImage繪圖在4.0之前記錄爲無線程安全。 – 2010-08-21 07:52:17