Androidでうまく動作するが、ときどきiOSでクラッシュするcodenameOneアプリがあります。nullのthreadToDeleteのためにCodenameOne IOSアプリケーションがクラッシュする
のXcodeから、それはそのがで失敗のようになります。nativeMethods.mに
JAVA_VOID java_lang_Thread_releaseThreadNativeResources___long(CODENAME_ONE_THREAD_STATE, JAVA_LONG nativeThreadId) {
for(int i = 0 ; i < NUMBER_OF_SUPPORTED_THREADS ; i++) {
if(threadsToDelete[i] != 0 && threadsToDelete[i]->threadId == nativeThreadId) {
free(threadsToDelete[i]->blocks);
free(threadsToDelete[i]->threadObjectStack);
free(threadsToDelete[i]->callStackClass);
free(threadsToDelete[i]->callStackLine);
free(threadsToDelete[i]->callStackMethod);
free(threadsToDelete[i]->pendingHeapAllocations);
free(threadsToDelete[i]);
threadsToDelete[i] = 0;
break;
}
}
}
。 ThreadToDeleteはそのifステートメントではヌルです。これは、画像を表示する新しいフォームを開いた後、元のフォームに戻ったときに発生するようです。特定の詳細をアマゾンに保存する新しいスレッドを開始します。しかし、毎回クラッシュすることはありません。
上記の行では、0と表示されていますか?配列内のエントリは0か、配列自体は 'threadsToDelete'ですか?単純なテストケースでこれを再現できる方法はありますか? –
行3、ifステートメント、threadsToDelete [i]がnullです。私は簡単なテストケースで再現する方法を知らない。私は、このコードが私のアプリのどの部分を引き起こしているのかを理解するために何をしているのか十分に知りません。私が言ったように、私は様々なバックグラウンドタスクのためのいくつかのスレッドを開始します。これを引き起こす可能性のあるアイデアがあれば、テストケースを見つけ出すことができますか? – Karry
'threadsToDelete [i]' == 0の場合、これはここでテストされた有効な状態であるため、これは問題ありません。 'threadsToDelete'が0の場合、問題になります。 xcodeからスタックトレースを投稿できますか? –