2

そのため、Parse SDK for Android で、この非常に奇妙で一見ランダムなクラッシュが発生しています。通常、これはおそらく Parse プラットフォームのバグに起因すると考えられますが、これはすべてのユーザーにかなり一貫して発生しており、問題を調査しても既知の原因は見つかりません. 実際、これにわずかに関連する問題が 1 つだけあります。ここで見つけることができます。リンク

基本的な内訳は、Crashlytics ログで次のクラッシュを検出していることです。

Fatal Exception: java.lang.RuntimeException: An error occured while executing doInBackground()
   at android.os.AsyncTask$3.done(AsyncTask.java:300)
   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
   at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
   at java.util.concurrent.FutureTask.run(FutureTask.java:242)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
   at java.lang.Thread.run(Thread.java:818)
Caused by java.util.ConcurrentModificationException
       at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
       at java.util.HashMap$KeyIterator.next(HashMap.java:814)
       at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:960)
       at com.parse.ParseTraverser.visit(ParseTraverser.java:100)
       at com.parse.ParseTraverser.visit(ParseTraverser.java:94)
       at com.parse.ParseTraverser.visit(ParseTraverser.java:101)
       at com.parse.ParseTraverser.visit(ParseTraverser.java:94)
       at com.parse.ParseTraverser.visit(ParseTraverser.java:101)
       at com.parse.ParseTraverser.traverse(ParseTraverser.java:137)
       at com.parse.OfflineStore.saveLocallyAsync(OfflineStore.java:776)
       at com.parse.OfflineStore.access$200(OfflineStore.java:36)
       at com.parse.OfflineStore$38.then(OfflineStore.java:1251)
       at com.parse.OfflineStore$38.then(OfflineStore.java:1227)
       at bolts.Task$15.run(Task.java:917)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:908)
       at bolts.Task.continueWithTask(Task.java:715)
       at bolts.Task.continueWithTask(Task.java:726)
       at bolts.Task$13.then(Task.java:818)
       at bolts.Task$13.then(Task.java:806)
       at bolts.Task$15.run(Task.java:917)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:908)
       at bolts.Task.access$100(Task.java:32)
       at bolts.Task$11.then(Task.java:708)
       at bolts.Task$11.then(Task.java:705)
       at bolts.Task.runContinuations(Task.java:956)
       at bolts.Task.trySetResult(Task.java:994)
       at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
       at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
       at bolts.Task$15$1.then(Task.java:934)
       at bolts.Task$15$1.then(Task.java:921)
       at bolts.Task$14.run(Task.java:872)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:863)
       at bolts.Task.continueWith(Task.java:661)
       at bolts.Task.continueWith(Task.java:672)
       at bolts.Task$15.run(Task.java:921)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:908)
       at bolts.Task.access$100(Task.java:32)
       at bolts.Task$11.then(Task.java:708)
       at bolts.Task$11.then(Task.java:705)
       at bolts.Task.runContinuations(Task.java:956)
       at bolts.Task.trySetResult(Task.java:994)
       at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
       at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
       at bolts.Task$15$1.then(Task.java:934)
       at bolts.Task$15$1.then(Task.java:921)
       at bolts.Task$14.run(Task.java:872)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:863)
       at bolts.Task.continueWith(Task.java:661)
       at bolts.Task.continueWith(Task.java:672)
       at bolts.Task$15.run(Task.java:921)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:908)
       at bolts.Task.access$100(Task.java:32)
       at bolts.Task$11.then(Task.java:708)
       at bolts.Task$11.then(Task.java:705)
       at bolts.Task.runContinuations(Task.java:956)
       at bolts.Task.trySetResult(Task.java:994)
       at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
       at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
       at bolts.Task$15$1.then(Task.java:934)
       at bolts.Task$15$1.then(Task.java:921)
       at bolts.Task$14.run(Task.java:872)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:863)
       at bolts.Task.continueWith(Task.java:661)
       at bolts.Task.continueWith(Task.java:672)
       at bolts.Task$15.run(Task.java:921)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:908)
       at bolts.Task.access$100(Task.java:32)
       at bolts.Task$11.then(Task.java:708)
       at bolts.Task$11.then(Task.java:705)
       at bolts.Task.runContinuations(Task.java:956)
       at bolts.Task.trySetResult(Task.java:994)
       at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
       at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
       at bolts.Task$15$1.then(Task.java:934)
       at bolts.Task$15$1.then(Task.java:921)
       at bolts.Task$14.run(Task.java:872)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:863)
       at bolts.Task.continueWith(Task.java:661)
       at bolts.Task.continueWith(Task.java:672)
       at bolts.Task$15.run(Task.java:921)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

ご覧のとおり、このスタック トレースは、問題がコードのどこで発生しているかを示しておらず、問題を一貫して再現することはできません。リンクした前の問題とは対照的に、ランダムにポップアップするように見えます。

誰もこの問題の経験がありますか? もしそうなら、これは何が原因ですか?私たちのコードのどこかがParseObjects のリストをループしてエントリを削除するかどうかを確認しましたが、これが発生しているインスタンスは見つかりません。

4

0 に答える 0