Kotlin: ArrayIndexOutOfBoundsException при преобразовании DispatchTask в строку

Мы выпустили наши первые части Kotlin в производство, и мы получаем сбои с этой стопкой:

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at kotlin.jvm.internal.ReflectionFactory.renderLambdaToString(ReflectionFactory.java:47) at kotlin.jvm.internal.Reflection.renderLambdaToString(Reflection.java:80) at kotlin.jvm.internal.Lambda.toString(Lambda.kt:22) at java.lang.StringBuilder.append(StringBuilder.java:202) at kotlinx.coroutines.experimental.DispatchedContinuation.toString(CoroutineDispatcher.kt:192) at java.lang.StringBuilder.append(StringBuilder.java:202) at kotlinx.coroutines.experimental.DispatchTask.toString(CoroutineDispatcher.kt:124) at java.lang.StringBuilder.append(StringBuilder.java:202) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:5637) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

Google показывает нам, что это происходит на 100% на Android 5. Crashlytics / Fabric показывает также две аварии с Android 4.4. Никаких сбоев с более новых версий Android.

Я не знаю, как предотвратить этот крах или как его реплицировать.

Текущая версия:

  • org.jetbrains.kotlinx: kotlinx-сопрограмма-ядро: 0,16

Это ошибка в отражении Котлина. Между тем, я предлагаю обновить до последней версии библиотеки kotlinx.coroutines (вы можете найти, что такое последняя версия здесь ). Поскольку версия 0.17 DispatchTask.toString больше не пытается скрывать лямбду в строке. Реализация toString самом деле теперь более полезна и имеет более релевантную информацию для целей отладки.

  • Kotlin: как передать последовательность (сопрограммы) как Iterable <T>
  • Переключение контекста kotlin coroutine при тестировании Android-презентатора
  • Есть ли способ повторно использовать экземпляр задания?
  • "Coroutine local" переменные в kotlin
  • как закрыть kotlin coroutines максимальный параллелизм
  • Слушатель внутри производителя
  • Kotlin coroutines использует продукты и mockito, чтобы издеваться над производственной работой
  • Актер Котлин к актерскому общению
  • Kotlin Coroutines с таймаутом
  • Как использовать код, который опирается на ThreadLocal с сопрограммами Kotlin
  • Kotlin coroutines: использование синхронного использования cassandra vs для перевода асинхронного использования
  • Давайте будем гением компьютера.