Skip to content

File picker crashes on Linux Desktop while working on Android/Web #356

@kamlendras

Description

@kamlendras

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

  1. Click on file picker button
  2. File manager opens briefly
  3. Error dialog appears
  4. Clicking "OK" on error dialog crashes the application
  5. 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

Image

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    linuxneed helpI'd love some help with this one!

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions