3

デバッグを一時停止するたびに、すべてまたは 1 つを除くすべてのスレッドが syscall_thread_switch でスタックする、アプリで競合状態に陥っています。シミュレーターでより頻繁に再現されますが、iPad Air でも再現されます。CocoaLumberjack の queueLogMessage には常に少なくとも 2 つのスレッドがスタックしています: -- スクリーンショットを参照してください。

これは 8.1 と 8.2 では見たことがありませんが、8.3 では頻繁に発生します。これが 8.3 のバグだと主張しているわけではありません :)

これは、これまでデバッグする必要がなかった複雑さのレベルであるため、どうすればよいかわかりません。十分な情報を提供できていることを願っています。さらに必要な場合はお知らせください (情報が明確でない場合は、情報を取得する方法を具体的に示してください)。これをデバッグするのを手伝ってくれませんか?! 何百万もの感謝。

スレッドの概要

スレッド詳細 1

スレッドの詳細 2

メインスレッド位置

4

1 に答える 1

3

iOS 8.3 の NSOperationQueue の NSOperations で同様の問題が発生しました (CocoaLumberjack とは関係ありません)。独自のスレッドを作成する同時操作がありましたが、これは不要になりました。8.2 では問題なく動作しましたが、8.3 では動作しませんでした。

start メソッドでは、次のように単純に置き換えました。

[NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil];

と:

[self main];
于 2015-04-20T16:39:09.663 に答える