You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ERROR: Unhandled exception in [androidx.compose.ui.awt.ComposeBridge$coroutineExceptionHandler$1@3384b078, androidx.compose.runtime.BroadcastFrameClock@50e0c941, StandaloneCoroutine{Cancelling}@a2bfb53, FlushCoroutineDispatcher@35413f0]
java.lang.NullPointerException: Parameter specified as non-null is null: method androidx.compose.ui.platform.PlatformInput$methodRequestsForInput$1.getTextLocation, parameter offset
at androidx.compose.ui.platform.PlatformInput$methodRequestsForInput$1.getTextLocation(DesktopPlatformInput.desktop.kt)
at java.desktop/sun.awt.X11.XInputMethod.updateCandidatesNativeWindowPosition(XInputMethod.java:379)
at java.desktop/sun.awt.X11.XInputMethod.activate(XInputMethod.java:85)
at java.desktop/sun.awt.im.InputContext.activateInputMethod(InputContext.java:396)
at java.desktop/sun.awt.im.InputContext.focusGained(InputContext.java:338)
at java.desktop/sun.awt.im.InputContext.dispatchEvent(InputContext.java:245)
at java.desktop/sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:197)
at java.desktop/java.awt.Component.enableInputMethods(Component.java:1666)
at org.jetbrains.skiko.SkiaLayer.enableInputMethods(SkiaLayer.awt.kt:412)
at androidx.compose.ui.awt.ComposeBridge$platformComponent$1.enableInput(ComposeBridge.desktop.kt:107)
at androidx.compose.ui.platform.PlatformInput.startInput(DesktopPlatformInput.desktop.kt:71)
at androidx.compose.ui.text.input.TextInputService.startInput(TextInputService.kt:56)
at androidx.compose.foundation.text.TextFieldDelegate$Companion.restartInput$foundation(TextFieldDelegate.kt:251)
at androidx.compose.foundation.text.TextFieldDelegate$Companion.onFocus$foundation(TextFieldDelegate.kt:280)
at androidx.compose.foundation.text.CoreTextFieldKt.startInputSession(CoreTextField.kt:970)
at androidx.compose.foundation.text.CoreTextFieldKt.access$startInputSession(CoreTextField.kt:1)
at androidx.compose.foundation.text.CoreTextFieldKt$CoreTextField$focusModifier$1.invoke(CoreTextField.kt:307)
at androidx.compose.foundation.text.CoreTextFieldKt$CoreTextField$focusModifier$1.invoke(CoreTextField.kt:295)
at androidx.compose.ui.focus.FocusChangedNode.onFocusEvent(FocusChangedModifier.kt:59)
at androidx.compose.ui.focus.FocusEventModifierNodeKt.refreshFocusEventNodes(FocusEventModifierNode.kt:68)
at androidx.compose.ui.focus.FocusTransactionsKt.requestFocusForChild(FocusTransactions.kt:197)
at androidx.compose.ui.focus.FocusTransactionsKt.performRequestFocus(FocusTransactions.kt:68)
at androidx.compose.ui.focus.FocusTransactionsKt.requestFocus(FocusTransactions.kt:44)
at androidx.compose.ui.focus.FocusRequester.focus$ui(FocusRequester.kt:72)
at androidx.compose.ui.focus.FocusRequester.requestFocus(FocusRequester.kt:63)
at androidx.compose.foundation.text.selection.TextFieldSelectionManager$mouseSelectionObserver$1.onStart-3MmeM6k(TextFieldSelectionManager.kt:300)
at androidx.compose.foundation.text.selection.TextSelectionMouseDetectorKt$mouseSelectionDetector$2.invokeSuspend(TextSelectionMouseDetector.kt:100)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:179)
at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:168)
at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:474)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:508)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:497)
at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:368)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:672)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(SuspendingPointerInputFilter.kt:549)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:571)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:326)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:312)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:312)
at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:185)
at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:104)
at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:97)
at androidx.compose.ui.platform.SkiaBasedOwner.processPointerInput-gBdvCQM$ui(SkiaBasedOwner.skiko.kt:362)
at androidx.compose.ui.platform.SkiaBasedOwner.processPointerInput-gBdvCQM$ui$default(SkiaBasedOwner.skiko.kt:355)
at androidx.compose.ui.ComposeScene.processPress(ComposeScene.skiko.kt:722)
at androidx.compose.ui.ComposeScene.processPointerInput(ComposeScene.skiko.kt:697)
at androidx.compose.ui.ComposeScene.access$processPointerInput(ComposeScene.skiko.kt:68)
at androidx.compose.ui.ComposeScene$syntheticEventSender$1.invoke(ComposeScene.skiko.kt:299)
at androidx.compose.ui.ComposeScene$syntheticEventSender$1.invoke(ComposeScene.skiko.kt:299)
at androidx.compose.ui.SyntheticEventSender.sendInternal(SyntheticEventSender.kt:179)
at androidx.compose.ui.SyntheticEventSender.send(SyntheticEventSender.kt:83)
at androidx.compose.ui.ComposeScene.sendPointerEvent-WlEVilQ(ComposeScene.skiko.kt:668)
at androidx.compose.ui.ComposeScene.sendPointerEvent-BGSDPeU(ComposeScene.skiko.kt:610)
at androidx.compose.ui.ComposeScene.sendPointerEvent-BGSDPeU$default(ComposeScene.skiko.kt:593)
at androidx.compose.ui.awt.ComposeBridge_desktopKt.onMouseEvent(ComposeBridge.desktop.kt:440)
at androidx.compose.ui.awt.ComposeBridge_desktopKt.access$onMouseEvent(ComposeBridge.desktop.kt:1)
at androidx.compose.ui.awt.ComposeBridge$onMouseEvent$1.invoke(ComposeBridge.desktop.kt:271)
at androidx.compose.ui.awt.ComposeBridge$onMouseEvent$1.invoke(ComposeBridge.desktop.kt:264)
at androidx.compose.ui.awt.ComposeBridge.catchExceptions(ComposeBridge.desktop.kt:150)
at androidx.compose.ui.awt.ComposeBridge.onMouseEvent(ComposeBridge.desktop.kt:264)
at androidx.compose.ui.awt.ComposeBridge.access$onMouseEvent(ComposeBridge.desktop.kt:64)
at androidx.compose.ui.awt.ComposeBridge$attachComposeToComponent$3.mousePressed(ComposeBridge.desktop.kt:244)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6654)
at java.desktop/java.awt.Component.processEvent(Component.java:6422)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:794)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:766)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:764)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:763)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Parameter specified as non-null is null: method androidx.compose.ui.platform.PlatformInput$methodRequestsForInput$1.getTextLocation, parameter offset
at androidx.compose.ui.platform.PlatformInput$methodRequestsForInput$1.getTextLocation(DesktopPlatformInput.desktop.kt)
at java.desktop/sun.awt.X11.XInputMethod.updateCandidatesNativeWindowPosition(XInputMethod.java:379)
at java.desktop/sun.awt.X11.XInputMethod.activate(XInputMethod.java:85)
at java.desktop/sun.awt.im.InputContext.activateInputMethod(InputContext.java:396)
at java.desktop/sun.awt.im.InputContext.focusGained(InputContext.java:338)
at java.desktop/sun.awt.im.InputContext.dispatchEvent(InputContext.java:245)
at java.desktop/sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:197)
at java.desktop/java.awt.Component.enableInputMethods(Component.java:1666)
at org.jetbrains.skiko.SkiaLayer.enableInputMethods(SkiaLayer.awt.kt:412)
at androidx.compose.ui.awt.ComposeBridge$platformComponent$1.enableInput(ComposeBridge.desktop.kt:107)
at androidx.compose.ui.platform.PlatformInput.startInput(DesktopPlatformInput.desktop.kt:71)
at androidx.compose.ui.text.input.TextInputService.startInput(TextInputService.kt:56)
at androidx.compose.foundation.text.TextFieldDelegate$Companion.restartInput$foundation(TextFieldDelegate.kt:251)
at androidx.compose.foundation.text.TextFieldDelegate$Companion.onFocus$foundation(TextFieldDelegate.kt:280)
at androidx.compose.foundation.text.CoreTextFieldKt.startInputSession(CoreTextField.kt:970)
at androidx.compose.foundation.text.CoreTextFieldKt.access$startInputSession(CoreTextField.kt:1)
at androidx.compose.foundation.text.CoreTextFieldKt$CoreTextField$focusModifier$1.invoke(CoreTextField.kt:307)
at androidx.compose.foundation.text.CoreTextFieldKt$CoreTextField$focusModifier$1.invoke(CoreTextField.kt:295)
at androidx.compose.ui.focus.FocusChangedNode.onFocusEvent(FocusChangedModifier.kt:59)
at androidx.compose.ui.focus.FocusEventModifierNodeKt.refreshFocusEventNodes(FocusEventModifierNode.kt:68)
at androidx.compose.ui.focus.FocusTransactionsKt.requestFocusForChild(FocusTransactions.kt:197)
at androidx.compose.ui.focus.FocusTransactionsKt.performRequestFocus(FocusTransactions.kt:68)
at androidx.compose.ui.focus.FocusTransactionsKt.requestFocus(FocusTransactions.kt:44)
at androidx.compose.ui.focus.FocusRequester.focus$ui(FocusRequester.kt:72)
at androidx.compose.ui.focus.FocusRequester.requestFocus(FocusRequester.kt:63)
at androidx.compose.foundation.text.selection.TextFieldSelectionManager$mouseSelectionObserver$1.onStart-3MmeM6k(TextFieldSelectionManager.kt:300)
at androidx.compose.foundation.text.selection.TextSelectionMouseDetectorKt$mouseSelectionDetector$2.invokeSuspend(TextSelectionMouseDetector.kt:100)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:179)
at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:168)
at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:474)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:508)
at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:497)
at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:368)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:672)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.dispatchPointerEvent(SuspendingPointerInputFilter.kt:549)
at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImpl.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:571)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:326)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:312)
at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:312)
at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:185)
at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:104)
at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:97)
at androidx.compose.ui.platform.SkiaBasedOwner.processPointerInput-gBdvCQM$ui(SkiaBasedOwner.skiko.kt:362)
at androidx.compose.ui.platform.SkiaBasedOwner.processPointerInput-gBdvCQM$ui$default(SkiaBasedOwner.skiko.kt:355)
at androidx.compose.ui.ComposeScene.processPress(ComposeScene.skiko.kt:722)
at androidx.compose.ui.ComposeScene.processPointerInput(ComposeScene.skiko.kt:697)
at androidx.compose.ui.ComposeScene.access$processPointerInput(ComposeScene.skiko.kt:68)
at androidx.compose.ui.ComposeScene$syntheticEventSender$1.invoke(ComposeScene.skiko.kt:299)
at androidx.compose.ui.ComposeScene$syntheticEventSender$1.invoke(ComposeScene.skiko.kt:299)
at androidx.compose.ui.SyntheticEventSender.sendInternal(SyntheticEventSender.kt:179)
at androidx.compose.ui.SyntheticEventSender.send(SyntheticEventSender.kt:83)
at androidx.compose.ui.ComposeScene.sendPointerEvent-WlEVilQ(ComposeScene.skiko.kt:668)
at androidx.compose.ui.ComposeScene.sendPointerEvent-BGSDPeU(ComposeScene.skiko.kt:610)
at androidx.compose.ui.ComposeScene.sendPointerEvent-BGSDPeU$default(ComposeScene.skiko.kt:593)
at androidx.compose.ui.awt.ComposeBridge_desktopKt.onMouseEvent(ComposeBridge.desktop.kt:440)
at androidx.compose.ui.awt.ComposeBridge_desktopKt.access$onMouseEvent(ComposeBridge.desktop.kt:1)
at androidx.compose.ui.awt.ComposeBridge$onMouseEvent$1.invoke(ComposeBridge.desktop.kt:271)
at androidx.compose.ui.awt.ComposeBridge$onMouseEvent$1.invoke(ComposeBridge.desktop.kt:264)
at androidx.compose.ui.awt.ComposeBridge.catchExceptions(ComposeBridge.desktop.kt:150)
at androidx.compose.ui.awt.ComposeBridge.onMouseEvent(ComposeBridge.desktop.kt:264)
at androidx.compose.ui.awt.ComposeBridge.access$onMouseEvent(ComposeBridge.desktop.kt:64)
at androidx.compose.ui.awt.ComposeBridge$attachComposeToComponent$3.mousePressed(ComposeBridge.desktop.kt:244)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6654)
at java.desktop/java.awt.Component.processEvent(Component.java:6422)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:794)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:766)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:764)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:763)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.awt.ComposeBridge$coroutineExceptionHandler$1@3384b078, androidx.compose.runtime.BroadcastFrameClock@50e0c941, StandaloneCoroutine{Cancelling}@a2bfb53, FlushCoroutineDispatcher@35413f0]
The text was updated successfully, but these errors were encountered:
rock3r
changed the title
java.lang.NullPointerException: Parameter specified as non-null is null: method androidx.compose.ui.platform.PlatformInput$methodRequestsForInput$1.getTextLocation, parameter offset
NPE on Linux when interacting with TextField
Jan 10, 2024
After investigating this, I can repro on Ubuntu 22.04.3 with this minimal repro code:
importandroidx.compose.foundation.borderimportandroidx.compose.foundation.layout.paddingimportandroidx.compose.foundation.text.BasicTextFieldimportandroidx.compose.runtime.getValueimportandroidx.compose.runtime.mutableStateOfimportandroidx.compose.runtime.rememberimportandroidx.compose.runtime.setValueimportandroidx.compose.ui.Modifierimportandroidx.compose.ui.graphics.Colorimportandroidx.compose.ui.unit.dpimportandroidx.compose.ui.window.singleWindowApplicationfunmain() = singleWindowApplication {
var text by remember { mutableStateOf("") }
BasicTextField(text, { text = it }, modifier =Modifier.padding(8.dp).border(1.dp, Color.Red))
}
Clicking on the BasicTextField is enough to get the NPE.
Notice that there is nothing Jewel-related here. This only seems to happen when running on the JBR. I am trying to test under different JDKs and will also try to test on x64 (I am on arm64)
The sun.awt.X11.XInputMethod bits of the stack trace may point to this being a Linux only thing
Click in the text field
Note the following stack trace
The text was updated successfully, but these errors were encountered: