簡體   English   中英

如何在iOS 8.3中調試syscall_thread_switch?

[英]How to debug syscall_thread_switch in iOS 8.3?

自從遷移到iOS 8.3后,我遇到了這個錯誤,主線程將在此調用中遇到困難。 一些其他線程也被卡在該調用中。 在導致此調用的任何線程中都沒有我的代碼,所以我很難過為什么會發生這種情況。 有時,當點擊按鈕欄項時,有時會重繪圖表(使用ShinobiCharts)等。

這是來自Xcode的堆棧跟蹤:

在此輸入圖像描述

任何人都有任何線索,為什么會發生這種情況以及如何解決它? 這很煩人,因為當我被困在那里時,我必須重新啟動應用程序。 請注意,到目前為止,這種情況發生在模擬器中。 我正處於開發此應用程序的早期階段,並將大部分時間花在模擬器上。 我還沒有看到真正的設備上發生的錯誤,但是,我還沒有經常在設備上運行應用程序。

敲木頭,但我想我想出來了(至少在我的例子中)。

導致該解決方案的原因是搜索syscall_thread_switch,這使我得到了這個答案: https//stackoverflow.com/a/30333203/978509

其中,如果你查看我鏈接的回溯( https://gist.github.com/Shalmezad/65ff89d20aa7e0a9d094 ),每個syscall_thread_switch前面都有OSSpinLockLockSlow,答案說明看起來像Livelock,但是由於CPU使用率低,更明顯的是僵局。

通過我的代碼,我發現對於每個后台任務,我每次都創建了一個新的dispatch_queue_t。 我重新編寫了如何使用相同的隊列,這似乎解決了這個問題。

如果沒有來自復仇女神的更多信息(主要是一些代碼片段顯示他如何設置后台任務),我無法回答他們的具體問題,但這應該指出人們正確的方向來解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM