-
Notifications
You must be signed in to change notification settings - Fork 52
Open
Labels
Description
File picker crashes on Linux Desktop while working on Android/Web
Description
File picker works correctly on Android and Web platforms, but on Linux desktop, the file picker opens the file manager initially, then shows an error dialog and crashes the application when "OK" is clicked.
Environment
- Platform: Linux Desktop
- FileKit Version: 0.10.0
- Compose Multiplatform: 1.8.2
- JVM Version: 21
- OS: Linux (using Sway window manager)
Expected Behavior
File picker should open normally and allow file selection, similar to Android and Web platforms.
Actual Behavior
- Click on file picker button
- File manager opens briefly
- Error dialog appears
- Clicking "OK" on error dialog crashes the application
- Works fine on Android and Web platforms
Code Sample
build.gradle.kts
implementation(libs.androidx.lifecycle.runtimeCompose)
implementation("io.github.vinceglb:filekit-core:0.10.0")
implementation("io.github.vinceglb:filekit-dialogs-compose:0.10.0")Usage (commonMain)
import androidx.compose.runtime.*
import io.github.vinceglb.filekit.dialogs.FileKitMode
import io.github.vinceglb.filekit.dialogs.FileKitType
import io.github.vinceglb.filekit.dialogs.compose.rememberFilePickerLauncher
val launcher = rememberFilePickerLauncher(
type = FileKitType.File(extensions = listOf("torrent")),
mode = FileKitMode.Single
) { file ->
// Handle single file: PlatformFile?
}
// UI Component
IconButton(
onClick = { launcher.launch() }
) {
Icon(
imageVector = Icons.Default.Add,
contentDescription = "Add Torrent File"
)
}Screenshots/Logs
Error Dialog Screenshot
Terminal Output
SLF4J(W): No SLF4J providers were found.
SLF4J(W): Defaulting to no-operation (NOP) logger implementation
SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
Exception in thread "AWT-EventQueue-0" kotlinx.coroutines.CoroutinesInternalError: Fatal exception in coroutines machinery for CancellableContinuation(DispatchedContinuation[FlushCoroutineDispatcher@6ba9471d, Continuation at androidx.compose.foundation.gestures.PressGestureScopeImpl.tryAwaitRelease([TapGestureDetector.kt:530)@7746a4be]){Completed}@23044c87](about:blank). Please read KDoc to 'handleFatalException' method and report this incident to maintainers
at kotlinx.coroutines.DispatchedTask.handleFatalException$kotlinx_coroutines_core([DispatchedTask.kt:130](http://dispatchedtask.kt:130/))
at kotlinx.coroutines.DispatchedTask.run([DispatchedTask.kt:107](http://dispatchedtask.kt:107/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush$lambda$4([FlushCoroutineDispatcher.skiko.kt:96](http://flushcoroutinedispatcher.skiko.kt:96/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.performRun([FlushCoroutineDispatcher.skiko.kt:105](http://flushcoroutinedispatcher.skiko.kt:105/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush([FlushCoroutineDispatcher.skiko.kt:83](http://flushcoroutinedispatcher.skiko.kt:83/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneRecomposer.performScheduledEffects([ComposeSceneRecomposer.skiko.kt:91](http://composescenerecomposer.skiko.kt:91/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.BaseComposeScene.render([BaseComposeScene.skiko.kt:171](http://basecomposescene.skiko.kt:171/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.onRender$lambda$20$lambda$19([ComposeSceneMediator.desktop.kt:600](http://composescenemediator.desktop.kt:600/))
at [androidx.compose.ui](http://androidx.compose.ui/).viewinterop.SwingInteropContainer.postponingExecutingScheduledUpdates([SwingInteropContainer.desktop.kt:251](http://swinginteropcontainer.desktop.kt:251/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.onRender([ComposeSceneMediator.desktop.kt:598](http://composescenemediator.desktop.kt:598/))
at org.jetbrains.skiko.SkiaLayer.update$skiko([SkiaLayer.awt.kt:558](http://skialayer.awt.kt:558/))
at org.jetbrains.skiko.redrawer.AWTRedrawer.update([AWTRedrawer.kt:54](http://awtredrawer.kt:54/))
at org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer$Companion$frameDispatcher$1.invokeSuspend([LinuxOpenGLRedrawer.kt:122](http://linuxopenglredrawer.kt:122/))
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith([ContinuationImpl.kt:33](http://continuationimpl.kt:33/))
at kotlinx.coroutines.DispatchedTask.run([DispatchedTask.kt:100](http://dispatchedtask.kt:100/))
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.desktop/java.awt.Dialog.show(Unknown Source)
at java.desktop/java.awt.Component.show(Unknown Source)
at java.desktop/java.awt.Component.setVisible(Unknown Source)
at java.desktop/java.awt.Window.setVisible(Unknown Source)
at java.desktop/java.awt.Dialog.setVisible(Unknown Source)
at io.github.vinceglb.filekit.dialogs.platform.awt.AwtFilePicker$callAwtPicker$2$dialog$2.setVisible([AwtFilePicker.kt:76](http://awtfilepicker.kt:76/))
at io.github.vinceglb.filekit.dialogs.platform.awt.AwtFilePicker.callAwtPicker([AwtFilePicker.kt:96](http://awtfilepicker.kt:96/))
at io.github.vinceglb.filekit.dialogs.platform.awt.AwtFilePicker.openFilePicker([AwtFilePicker.kt:22](http://awtfilepicker.kt:22/))
at io.github.vinceglb.filekit.dialogs.platform.linux.LinuxFilePicker.openFilePicker([LinuxFilePicker.kt:35](http://linuxfilepicker.kt:35/))
at io.github.vinceglb.filekit.dialogs.FileKit_jvmKt.platformOpenFilePicker([FileKit.jvm.kt:26](http://filekit.jvm.kt:26/))
at io.github.vinceglb.filekit.dialogs.FileKitKt.openFilePicker([FileKit.kt:14](http://filekit.kt:14/))
at io.github.vinceglb.filekit.dialogs.compose.FileKitComposeKt$rememberFilePickerLauncher$returnedLauncher$1$1$1.invokeSuspend([FileKitCompose.kt:42](http://filekitcompose.kt:42/))
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith([ContinuationImpl.kt:33](http://continuationimpl.kt:33/))
at kotlinx.coroutines.DispatchedTask.run([DispatchedTask.kt:100](http://dispatchedtask.kt:100/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush$lambda$4([FlushCoroutineDispatcher.skiko.kt:96](http://flushcoroutinedispatcher.skiko.kt:96/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.performRun([FlushCoroutineDispatcher.skiko.kt:105](http://flushcoroutinedispatcher.skiko.kt:105/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush([FlushCoroutineDispatcher.skiko.kt:83](http://flushcoroutinedispatcher.skiko.kt:83/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneRecomposer.performScheduledEffects([ComposeSceneRecomposer.skiko.kt:91](http://composescenerecomposer.skiko.kt:91/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.BaseComposeScene.sendPointerEvent-lDgZiSw([BaseComposeScene.skiko.kt:224](http://basecomposescene.skiko.kt:224/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeScene.sendPointerEvent-lDgZiSw$default([ComposeScene.skiko.kt:188](http://composescene.skiko.kt:188/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator_desktopKt.onMouseEvent-d-4ec7I([ComposeSceneMediator.desktop.kt:810](http://composescenemediator.desktop.kt:810/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator_desktopKt.access$onMouseEvent-d-4ec7I([ComposeSceneMediator.desktop.kt:1](http://composescenemediator.desktop.kt:1/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.onMouseEvent([ComposeSceneMediator.desktop.kt:459](http://composescenemediator.desktop.kt:459/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.access$onMouseEvent([ComposeSceneMediator.desktop.kt:117](http://composescenemediator.desktop.kt:117/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator$mouseListener$1.mouseReleased([ComposeSceneMediator.desktop.kt:276](http://composescenemediator.desktop.kt:276/))
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [[androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeContainer$DesktopCoroutineExceptionHandler@674e6809, androidx.compose.runtime.BroadcastFrameClock@7242e20d, ScopeCoroutine{Completed}@51082346, FlushCoroutineDispatcher@6ba9471d]
Caused by: java.lang.ClassCastException: class kotlin.coroutines.jvm.internal.CompletedContinuation cannot be cast to class kotlinx.coroutines.internal.DispatchedContinuation (kotlin.coroutines.jvm.internal.CompletedContinuation and kotlinx.coroutines.internal.DispatchedContinuation are in unnamed module of loader 'app')
at kotlinx.coroutines.CoroutineDispatcher.releaseInterceptedContinuation([CoroutineDispatcher.kt:248](http://coroutinedispatcher.kt:248/))
at kotlin.coroutines.jvm.internal.ContinuationImpl.releaseIntercepted([ContinuationImpl.kt:118](http://continuationimpl.kt:118/))
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith([ContinuationImpl.kt:39](http://continuationimpl.kt:39/))
at kotlinx.coroutines.DispatchedTask.run([DispatchedTask.kt:232](http://dispatchedtask.kt:232/))
... 74 more
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class kotlinx.coroutines.internal.Symbol cannot be cast to class io.github.vinceglb.filekit.PlatformFile (kotlinx.coroutines.internal.Symbol and io.github.vinceglb.filekit.PlatformFile are in unnamed module of loader 'app')
at io.github.vinceglb.filekit.dialogs.FileKitMode$Single.consumeResult([FileKitMode.kt:19](http://filekitmode.kt:19/))
at io.github.vinceglb.filekit.dialogs.compose.FileKitComposeKt$rememberFilePickerLauncher$returnedLauncher$1$1$1.invokeSuspend([FileKitCompose.kt:49](http://filekitcompose.kt:49/))
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith([ContinuationImpl.kt:33](http://continuationimpl.kt:33/))
at kotlinx.coroutines.DispatchedTask.run([DispatchedTask.kt:100](http://dispatchedtask.kt:100/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush$lambda$4([FlushCoroutineDispatcher.skiko.kt:96](http://flushcoroutinedispatcher.skiko.kt:96/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.performRun([FlushCoroutineDispatcher.skiko.kt:105](http://flushcoroutinedispatcher.skiko.kt:105/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush([FlushCoroutineDispatcher.skiko.kt:83](http://flushcoroutinedispatcher.skiko.kt:83/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneRecomposer.performScheduledEffects([ComposeSceneRecomposer.skiko.kt:91](http://composescenerecomposer.skiko.kt:91/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.BaseComposeScene.render([BaseComposeScene.skiko.kt:171](http://basecomposescene.skiko.kt:171/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.onRender$lambda$20$lambda$19([ComposeSceneMediator.desktop.kt:600](http://composescenemediator.desktop.kt:600/))
at [androidx.compose.ui](http://androidx.compose.ui/).viewinterop.SwingInteropContainer.postponingExecutingScheduledUpdates([SwingInteropContainer.desktop.kt:251](http://swinginteropcontainer.desktop.kt:251/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.onRender([ComposeSceneMediator.desktop.kt:598](http://composescenemediator.desktop.kt:598/))
at org.jetbrains.skiko.SkiaLayer.update$skiko([SkiaLayer.awt.kt:558](http://skialayer.awt.kt:558/))
at org.jetbrains.skiko.redrawer.AWTRedrawer.update([AWTRedrawer.kt:54](http://awtredrawer.kt:54/))
at org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer$Companion$frameDispatcher$1.invokeSuspend([LinuxOpenGLRedrawer.kt:122](http://linuxopenglredrawer.kt:122/))
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith([ContinuationImpl.kt:33](http://continuationimpl.kt:33/))
at kotlinx.coroutines.DispatchedTask.run([DispatchedTask.kt:100](http://dispatchedtask.kt:100/))
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.desktop/java.awt.Dialog.show(Unknown Source)
at java.desktop/java.awt.Component.show(Unknown Source)
at java.desktop/java.awt.Component.setVisible(Unknown Source)
at java.desktop/java.awt.Window.setVisible(Unknown Source)
at java.desktop/java.awt.Dialog.setVisible(Unknown Source)
at io.github.vinceglb.filekit.dialogs.platform.awt.AwtFilePicker$callAwtPicker$2$dialog$2.setVisible([AwtFilePicker.kt:76](http://awtfilepicker.kt:76/))
at io.github.vinceglb.filekit.dialogs.platform.awt.AwtFilePicker.callAwtPicker([AwtFilePicker.kt:96](http://awtfilepicker.kt:96/))
at io.github.vinceglb.filekit.dialogs.platform.awt.AwtFilePicker.openFilePicker([AwtFilePicker.kt:22](http://awtfilepicker.kt:22/))
at io.github.vinceglb.filekit.dialogs.platform.linux.LinuxFilePicker.openFilePicker([LinuxFilePicker.kt:35](http://linuxfilepicker.kt:35/))
at io.github.vinceglb.filekit.dialogs.FileKit_jvmKt.platformOpenFilePicker([FileKit.jvm.kt:26](http://filekit.jvm.kt:26/))
at io.github.vinceglb.filekit.dialogs.FileKitKt.openFilePicker([FileKit.kt:14](http://filekit.kt:14/))
at io.github.vinceglb.filekit.dialogs.compose.FileKitComposeKt$rememberFilePickerLauncher$returnedLauncher$1$1$1.invokeSuspend([FileKitCompose.kt:42](http://filekitcompose.kt:42/))
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith([ContinuationImpl.kt:33](http://continuationimpl.kt:33/))
at kotlinx.coroutines.DispatchedTask.run([DispatchedTask.kt:100](http://dispatchedtask.kt:100/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush$lambda$4([FlushCoroutineDispatcher.skiko.kt:96](http://flushcoroutinedispatcher.skiko.kt:96/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.performRun([FlushCoroutineDispatcher.skiko.kt:105](http://flushcoroutinedispatcher.skiko.kt:105/))
at [androidx.compose.ui](http://androidx.compose.ui/).platform.FlushCoroutineDispatcher.flush([FlushCoroutineDispatcher.skiko.kt:83](http://flushcoroutinedispatcher.skiko.kt:83/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneRecomposer.performScheduledEffects([ComposeSceneRecomposer.skiko.kt:91](http://composescenerecomposer.skiko.kt:91/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.BaseComposeScene.sendPointerEvent-lDgZiSw([BaseComposeScene.skiko.kt:224](http://basecomposescene.skiko.kt:224/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeScene.sendPointerEvent-lDgZiSw$default([ComposeScene.skiko.kt:188](http://composescene.skiko.kt:188/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator_desktopKt.onMouseEvent-d-4ec7I([ComposeSceneMediator.desktop.kt:810](http://composescenemediator.desktop.kt:810/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator_desktopKt.access$onMouseEvent-d-4ec7I([ComposeSceneMediator.desktop.kt:1](http://composescenemediator.desktop.kt:1/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.onMouseEvent([ComposeSceneMediator.desktop.kt:459](http://composescenemediator.desktop.kt:459/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator.access$onMouseEvent([ComposeSceneMediator.desktop.kt:117](http://composescenemediator.desktop.kt:117/))
at [androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeSceneMediator$mouseListener$1.mouseReleased([ComposeSceneMediator.desktop.kt:276](http://composescenemediator.desktop.kt:276/))
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [[androidx.compose.ui](http://androidx.compose.ui/).scene.ComposeContainer$DesktopCoroutineExceptionHandler@674e6809, androidx.compose.runtime.BroadcastFrameClock@7242e20d, StandaloneCoroutine{Cancelling}@c24bd68, FlushCoroutineDispatcher@6ba9471d]
BUILD SUCCESSFUL in 10s
18 actionable tasks: 1 executed, 17 up-to-date
Additional Context
- The same code works perfectly on Android and Web platforms
- Issue occurs specifically on Linux desktop (tested with Sway window manager)
- File manager opens briefly before the error dialog appears
- Application crashes only after clicking "OK" on the error dialog
Possible Related Issues
- Desktop file dialog implementation on Linux
- Native file picker integration on Linux desktop