1

我们已经将我们的第一个 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)

谷歌向我们展示了这在 Android 5 上 100% 发生。Crashlytics/Fabric 还显示了来自 Android 4.4 的两次崩溃。较新的 Android 版本没有崩溃。

我不知道如何防止这种崩溃或如何复制它。

当前版本:

  • org.jetbrains.kotlinx:kotlinx-coroutines-core:0.16
4

1 回答 1

1

这是 Kotlin 反射中的一个错误。同时,我建议升级到最新版本的库(你可以在这里kotlinx.coroutines找到最新版本)。由于 0.17 版不再尝试将 lambda 转换为字符串。它的实现现在实际上更有用,并且具有更多用于调试目的的相关信息。DispatchTask.toStringtoString

于 2017-08-28T09:50:19.393 回答