Skip to content
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

TapGestureDetector mutex is not locked error on Touchscreen #4560

Open
acarlsen opened this issue Mar 29, 2024 · 2 comments
Open

TapGestureDetector mutex is not locked error on Touchscreen #4560

acarlsen opened this issue Mar 29, 2024 · 2 comments
Assignees
Labels
bug Something isn't working desktop input Touch, mouse, keyboard input related

Comments

@acarlsen
Copy link

Describe the bug
This bug is identical to a previous closed issue.
#3655

I had this error with version 1.6.0 for several of my users (reported on Sentry.io).
The app is a JVM desktop app, and was running on a Windows x64.

Affected platforms
Desktop (Windows JVM)

Versions

  • Kotlin version: 1.9.22
  • Compose Multiplatform version*: 1.6.0
  • OS version(s)* (required for Desktop and iOS issues): Windows x64 (Sentry.io doesn't give my more)
  • OS architecture (x86 or arm64): x86
  • JDK (for desktop issues): 17 (JetBrains s.r.o 17.0.9)

To Reproduce
I don't know how to recreate it (don't have desktop with touchscreen).

Stacktrace below:

java.lang.IllegalStateException: This mutex is not locked
    at kotlinx.coroutines.sync.MutexImpl.unlock(SourceFile:208)
    at kotlinx.coroutines.sync.MutexImpl$CancellableContinuationWithOwner$tryResume$token$1.invoke(SourceFile:256)
    at kotlinx.coroutines.sync.MutexImpl$CancellableContinuationWithOwner$tryResume$token$1.invoke(SourceFile:253)
    at kotlinx.coroutines.CancellableContinuationImpl.callOnCancellation(SourceFile:255)
    at kotlinx.coroutines.CompletedContinuation.invokeHandlers(SourceFile:655)
    at kotlinx.coroutines.CancellableContinuationImpl.cancelCompletedResult$kotlinx_coroutines_core(SourceFile:176)
    at kotlinx.coroutines.DispatchedTask.run(SourceFile:98)
    at b.b.f.l.F$b.a(SourceFile:90)
    at b.b.f.l.F$b.invoke(SourceFile:78)
    at b.b.f.l.F.a(SourceFile:99)
    at b.b.f.l.F.a(SourceFile:78)
    at b.b.f.n.A.c(SourceFile:88)
    at b.b.f.n.a.a(SourceFile:165)
    at b.b.f.n.u.onRender(SourceFile:562)
    at org.jetbrains.skiko.SkiaLayer.update$skiko(SourceFile:548)
    at org.jetbrains.skiko.redrawer.AWTRedrawer.update(SourceFile:54)
    at org.jetbrains.skiko.redrawer.WindowsOpenGLRedrawer$Companion$frameDispatcher$1.invokeSuspend(SourceFile:98)
    at org.jetbrains.skiko.redrawer.WindowsOpenGLRedrawer$Companion$frameDispatcher$1.invoke(SourceFile)
    at org.jetbrains.skiko.redrawer.WindowsOpenGLRedrawer$Companion$frameDispatcher$1.invoke(SourceFile)
    at org.jetbrains.skiko.FrameDispatcher$job$1.invokeSuspend(SourceFile:33)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
    at kotlinx.coroutines.DispatchedTask.run(SourceFile:104)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
    at java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.awt.EventQueue$3.run(EventQueue.java:733)
    at java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
kotlinx.coroutines.CompletionHandlerException: Exception in resume onCancellation handler for CancellableContinuation(DispatchedContinuation[F@36a53f9, Continuation at androidx.compose.foundation.gestures.PressGestureScopeImpl.reset(TapGestureDetector.kt)@22defa2d]){Completed}@1a460993
    at kotlinx.coroutines.CancellableContinuationImpl.callOnCancellation(SourceFile:260)
    at kotlinx.coroutines.CompletedContinuation.invokeHandlers(SourceFile:655)
    at kotlinx.coroutines.CancellableContinuationImpl.cancelCompletedResult$kotlinx_coroutines_core(SourceFile:176)
    at kotlinx.coroutines.DispatchedTask.run(SourceFile:98)
    at b.b.f.l.F$b.a(SourceFile:90)
    at b.b.f.l.F$b.invoke(SourceFile:78)
    at b.b.f.l.F.a(SourceFile:99)
    at b.b.f.l.F.a(SourceFile:78)
    at b.b.f.n.A.c(SourceFile:88)
    at b.b.f.n.a.a(SourceFile:165)
    at b.b.f.n.u.onRender(SourceFile:562)
    at org.jetbrains.skiko.SkiaLayer.update$skiko(SourceFile:548)
    at org.jetbrains.skiko.redrawer.AWTRedrawer.update(SourceFile:54)
    at org.jetbrains.skiko.redrawer.WindowsOpenGLRedrawer$Companion$frameDispatcher$1.invokeSuspend(SourceFile:98)
    at org.jetbrains.skiko.redrawer.WindowsOpenGLRedrawer$Companion$frameDispatcher$1.invoke(SourceFile)
    at org.jetbrains.skiko.redrawer.WindowsOpenGLRedrawer$Companion$frameDispatcher$1.invoke(SourceFile)
    at org.jetbrains.skiko.FrameDispatcher$job$1.invokeSuspend(SourceFile:33)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
    at kotlinx.coroutines.DispatchedTask.run(SourceFile:104)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
    at java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.awt.EventQueue$3.run(EventQueue.java:733)
    at java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

@acarlsen acarlsen added bug Something isn't working submitted labels Mar 29, 2024
@mazunin-v-jb mazunin-v-jb added desktop input Touch, mouse, keyboard input related and removed submitted labels Apr 1, 2024
@acarlsen
Copy link
Author

Just FYI here is an de-obfuscated stacktrace:

java.lang.IllegalStateException: This mutex is not locked at kotlinx.coroutines.sync.MutexImpl.unlock(SourceFile:208) at kotlinx.coroutines.sync.MutexImpl$CancellableContinuationWithOwner$tryResume$token$1.invoke(SourceFile:256) at kotlinx.coroutines.sync.MutexImpl$CancellableContinuationWithOwner$tryResume$token$1.invoke(SourceFile:253) at kotlinx.coroutines.CancellableContinuationImpl.callOnCancellation(SourceFile:255) at kotlinx.coroutines.CompletedContinuation.invokeHandlers(SourceFile:655) at kotlinx.coroutines.CancellableContinuationImpl.cancelCompletedResult$kotlinx_coroutines_core(SourceFile:176) at kotlinx.coroutines.DispatchedTask.run(SourceFile:98) at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(SourceFile:62) at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(SourceFile:57) at androidx.compose.ui.platform.FlushCoroutineDispatcher.performRun(SourceFile:99) at androidx.compose.ui.platform.FlushCoroutineDispatcher.access$performRun(SourceFile:37) at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2.invokeSuspend(SourceFile:57) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33) at kotlinx.coroutines.DispatchedTask.run(SourceFile:104) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781) at java.awt.EventQueue$4.run(EventQueue.java:728) at java.awt.EventQueue$4.run(EventQueue.java:722) at java.security.AccessController.doPrivileged(AccessController.java:400) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:750) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:92) kotlinx.coroutines.CompletionHandlerException: Exception in resume onCancellation handler for CancellableContinuation(DispatchedContinuation[FlushCoroutineDispatcher@50dd9877, Continuation at androidx.compose.foundation.gestures.PressGestureScopeImpl.reset(TapGestureDetector.kt)@2eddd6a]){Completed}@7756587b at kotlinx.coroutines.CancellableContinuationImpl.callOnCancellation(SourceFile:260) at kotlinx.coroutines.CompletedContinuation.invokeHandlers(SourceFile:655) at kotlinx.coroutines.CancellableContinuationImpl.cancelCompletedResult$kotlinx_coroutines_core(SourceFile:176) at kotlinx.coroutines.DispatchedTask.run(SourceFile:98) at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(SourceFile:62) at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(SourceFile:57) at androidx.compose.ui.platform.FlushCoroutineDispatcher.performRun(SourceFile:99) at androidx.compose.ui.platform.FlushCoroutineDispatcher.access$performRun(SourceFile:37) at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2.invokeSuspend(SourceFile:57) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33) at kotlinx.coroutines.DispatchedTask.run(SourceFile:104) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781) at java.awt.EventQueue$4.run(EventQueue.java:728) at java.awt.EventQueue$4.run(EventQueue.java:722) at java.security.AccessController.doPrivileged(AccessController.java:400) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:750) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

@dazza5000
Copy link

We got this crash report in Crashlytics this morning

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working desktop input Touch, mouse, keyboard input related
Projects
None yet
Development

No branches or pull requests

4 participants