ConcurrentModificationException в ScanJob из Android-маяка-библиотеки - PullRequest
1 голос
/ 24 октября 2019

Я сканирую приложение на BLE devices. В Crashlytics я заметил следующее падение:

Fatal Exception: java.util.ConcurrentModificationException
       at java.util.ArrayList$Itr.next + 860(ArrayList.java:860)
       at org.altbeacon.beacon.service.ScanJob$1.run + 81(ScanJob.java:81)
       at java.lang.Thread.run + 764(Thread.java:764)

pool-27-thread-2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$ + 2137(Thread.java:2137)
       at sun.misc.Unsafe.park + 358(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park + 190(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await + 2059(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.LinkedBlockingQueue.take + 442(LinkedBlockingQueue.java:442)
       at java.util.concurrent.ThreadPoolExecutor.getTask + 1087(ThreadPoolExecutor.java:1087)
       at java.util.concurrent.ThreadPoolExecutor.runWorker + 1147(ThreadPoolExecutor.java:1147)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run + 636(ThreadPoolExecutor.java:636)
       at java.lang.Thread.run + 764(Thread.java:764)

ParseCommandCache.runLoop()
       at java.lang.Object.wait(Object.java)
       at com.parse.ParseCommandCache.runLoop + 664(ParseCommandCache.java:664)
       at com.parse.ParseCommandCache.access$000 + 40(ParseCommandCache.java:40)
       at com.parse.ParseCommandCache$2.run + 188(ParseCommandCache.java:188)

Похоже, что сбой происходит только на устройстве под управлением Android 8 +

Кто-нибудь сталкивался с этой ошибкой и знает, как ее исправить?

Приложение использует lib org.altbeacon:android-beacon-library версия 2.16.3

1 Ответ

2 голосов
/ 24 октября 2019

Похоже, это редкая ошибка в библиотеке, которая вылетает во время гонки, когда новый результат фонового сканирования доставляется намеренно в фоновом режиме. Коллекция в этом методе должна быть скопирована перед возвращением, чтобы исправить ошибку:

https://github.com/AltBeacon/android-beacon-library/blob/49ebe93a936c406c2fb86a9e3be88908f2e07e4e/lib/src/main/java/org/altbeacon/beacon/service/ScanJobScheduler.java#L76

Пожалуйста, откройте новую проблему в репозитории библиотеки GitHub (перейдите по этой ссылке) и вставьте ссылкуна этот вопрос. Мы исправим в следующей версии библиотеки.

...