[英]syscall_thread_switch iOS 8.3 race - CocoaLumberjack bug? how to debug this?
我在我的應用程序中遇到了競爭條件,每當我暫停調試時,除了 1 個線程之外的所有或所有線程都卡在 syscall_thread_switch 上。 它在模擬器上重現的頻率更高,在 iPad Air 上也是如此。 總是至少有 2 個線程卡在 CocoaLumberjack 的 queueLogMessage 中:-請參閱屏幕截圖。
我以前從未在 8.1 和 8.2 上看到過這種情況,但我在 8.3 上經常遇到這種情況。 我並不是說這是一個 8.3 的錯誤 :)
這是我以前從未調試過的復雜程度,所以我不知道該怎么做。 我希望我提供了足夠的信息,如果您需要更多信息,請告訴我(如果不是很清楚,請具體說明如何獲取信息)。 你能幫我調試一下嗎?! 數以百萬計的感謝。
我在 iOS 8.3 的 NSOperationQueue 中遇到了類似的 NSOperations 問題(與 CocoaLumberjack 無關)。 我有並發操作創建自己的線程,這不再需要。 它在 8.2 中表現得非常好,但在 8.3 中則不然。
在 start 方法中,我簡單地替換了:
[NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil];
和:
[self main];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.