Skip to content

Crash coroutine on Xiaomi devices #2718

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Mrkchv opened this issue May 19, 2021 · 3 comments
Closed

Crash coroutine on Xiaomi devices #2718

Mrkchv opened this issue May 19, 2021 · 3 comments

Comments

@Mrkchv
Copy link

Mrkchv commented May 19, 2021

App crash when using the list as a return value on Xiaomi devices. The suspend function is called on the main thread. Then it switches to Dispatcher.IO

Suspend repository function before modification
suspend fun getAdvicesList(isForceRequest: Boolean): Either<List<ProductAdvice>>

Function implementation

override suspend fun getAdvicesList(
    isForceRequest: Boolean
): Either<List<ProductAdvice>> = ioAsync {
    cachingLoad(
        cachedData = productsShortCache.userAdvice,
        isForce = isForceRequest,
        coroutineBlock = { adviceApi.getPublicAdvice() }
    ).toEither { it.toAdvicesList() }
}

Suspend repository function after changes that fix the crash
suspend fun getAdvicesList(isForceRequest: Boolean): Either<UserAdvice>

Function implementation

override suspend fun getAdvicesList(
    isForceRequest: Boolean
): Either<UserAdvice> = ioAsync {
    cachingLoad(
        cachedData = productsShortCache.userAdvice,
        isForce = isForceRequest,
        coroutineBlock = { adviceApi.getPublicAdvice() }
    ).toEither { it.toUserAdvice() }
}

Either wrapper

sealed class Either<out T> : Serializable {
    data class Error(val message: String?, val e: Exception) : Either<Nothing>()
    data class ApiError(val errorResponseMo: ErrorResponseMo) : Either<Nothing>()
    data class Success<T>(val value: T) : Either<T>()
}

Suspend function call location. The crash also does not occur if remove the delay() from jobLoading

override suspend fun run(): Result<T> {
    var coroutineResult: CoroutineResultState<Either<T>> = CoroutineResultState.None
    var result: Result<T> = Result.None
    var jobLoading: Job? = null
    if (isLoadingDelayEnabled) {
        jobLoading = launcher.launch {
            delay(FAST_RESPONSE_DURATION)
            if (coroutineResult == CoroutineResultState.None) {
                onLoading?.invoke(true)
            }
         }
     } else {
         onLoading?.invoke(true)
     }
     try {
        coroutineResult = coroutine(launcher).let {
            CoroutineResultState.Success(it)
        }
     } catch (error: Throwable) {
        val isCanceledJob = (error is CancellationException && error !is FinalCancellationException)
        if (launcher.isActive && !isCanceledJob) {
            result = handleThrowable(error)
        }
    } finally {
        jobLoading?.join()
        if (coroutineResult is CoroutineResultState.Success) {
            result = handleEither(coroutineResult.result)
        }
        return result
    }
}

Stack trace

java.lang.StackOverflowError: stack size 8MB
            at kotlin.ResultKt.createFailure(Result.kt:121)
            at kotlinx.coroutines.DebugStringsKt.toDebugString(DebugStrings.kt:18)
            at kotlinx.coroutines.internal.DispatchedContinuation.toString(DispatchedContinuation.kt:251)
            at kotlinx.coroutines.DebugStringsKt.toDebugString(DebugStrings.kt:16)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCo
[TRUNCATED 12097254 CHARS]
l.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.DisposeOnCancel.toString(CancellableContinuation.kt:385)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CompletedContinuation.toString(Unknown Source:22)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.CancellableContinuationImpl.toString(CancellableContinuationImpl.kt:506)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.ResumeOnCompletion.toString(JobSupport.kt:1395)
            at java.lang.String.valueOf(String.java:2827)
            at java.lang.StringBuilder.append(StringBuilder.java:132)
            at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1536)
            at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
            at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
            at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:903)
            at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:860)
            at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:825)
            at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:111)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
            at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:227)
            at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
            at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:362)
            at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:396)
            at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:388)
            at kotlinx.coroutines.CancellableContinuationImpl.resumeUndispatched(CancellableContinuationImpl.kt:484)
            at kotlinx.coroutines.android.HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1.run(Runnable.kt:19)
            at android.os.Handler.handleCallback(Handler.java:794)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:176)
            at android.app.ActivityThread.main(ActivityThread.java:6635)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
@dkhalanskyjb
Copy link
Collaborator

The specific stack trace you're observing looks like it should have been fixed in #2377. What version of coroutines do you use? If it's below 1.4.2, does the issue persist if you upgrade to 1.4.2 or later?

@Mrkchv
Copy link
Author

Mrkchv commented May 21, 2021

Yes, you were right. After upgrading the coroutines version, everything works. Thanks for the answer!

@dkhalanskyjb
Copy link
Collaborator

Great! I'm closing this issue, as it looks like you don't have any other questions. If you do, feel free to reopen it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants