Opened 2 years ago
Last modified 21 months ago
#22766 new defect
Text input eventually stops working
Reported by: | AntiCompositeNumber | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Core | Version: | |
Keywords: | template_report, linux | Cc: |
Description (last modified by )
After some time using JOSM normally, all text fields will stop reacting to input. Keyboard shortcuts and controls still work normally. Text fields do not react when clicked on, can not be pasted into by keyboard shortcut or context menu, and can not be typed into. This usually happens about 2 hours into an editing session and happens reliably. It does not appear to be associated with any particular action. The workaround is to restart JOSM. I did not observe it while running with --debug, but might not have waited long enough. I'll try for normal logs later. This issue appeared recently, after switching from josm-stable (18646) to josm-svn (18676). It also happened on 18662.
Please provide any additional information below. Attach a screenshot if possible.
Revision:18676 Is-Local-Build:true Build-Date:1969-12-07 02:05:32 Identification: JOSM/1.5 (18676 SVN en) Linux Arch Linux Memory Usage: 1168 MB / 3912 MB (312 MB allocated, but free) Java version: 19.0.2+7, N/A, OpenJDK 64-Bit Server VM Look and Feel: com.formdev.flatlaf.FlatDarkLaf Screen: :0.0 1920×1080 (scaling 1.00×1.00) :0.1 1920×1080 (scaling 1.00×1.00) Maximum Screen Size: 1920×1080 Best cursor sizes: 16×16→16×16, 32×32→32×32 Environment variable LANG: en_US.UTF-8 System property file.encoding: UTF-8 System property sun.jnu.encoding: UTF-8 Locale info: en_US Numbers with default locale: 1234567890 -> 1234567890 Desktop environment: i3 VM arguments: [-Djosm.restart=true, -Djava.net.useSystemProxies=true, -Dawt.useSystemAAFontSettings=gasp] Dataset consistency test: No problems found Plugins: + AddrInterpolation (36011) + Create_grid_of_ways (35976) + FastDraw (36057) + FixAddresses (36011) + HouseNumberTaggingTool (35951) + ImportImagePlugin (36013) + MakeParallel (v1.1.0) + Mapillary (2.1.1) + OpeningHoursEditor (35924) + QuickLabel (23) + RoadSigns (36038) + SeaChart (35840) + ShapeTools (1250) + alignways (36011) + apache-commons (36034) + apache-http (35924) + auto_tools (81) + buildings_tools (36011) + changeset-viewer (0.0.6) + continuosDownload (105) + contourmerge (v0.1.9) + easypresets (1623509627) + editgpx (36054) + ejml (35924) + flatlaf (36036) + geotools (36028) + http2 (35921) + intersection (0.0.7) + jackson (36034) + jaxb (35952) + jna (36005) + jogl (1.2.3) + jts (36004) + log4j (36034) + measurement (35978) + opendata (36025) + openqa (v0.3.3) + photo_geotagging (35933) + photoadjust (36011) + pt_assistant (1ff2e15) + public_transport (36011) + reverter (36043) + shrinkwrap (v1.0.4) + tageditor (36011) + todo (30306) + touchscreenhelper (35893) + turnlanes-tagging (v0.0.5) + turnrestrictions (36011) + undelete (36011) + utilsplugin2 (36011) + wikipedia (605) Tagging presets: + https://josm.openstreetmap.de/josmfile?page=Presets/ParkingLanes&zip=1 + https://josm.openstreetmap.de/josmfile?page=Presets/Quick-stops&zip=1 + https://raw.githubusercontent.com/yopaseopor/traffic_signs_preset_JOSM/master/US.zip + https://josm.openstreetmap.de/josmfile?page=Presets/Quick-highways&zip=1 + https://josm.openstreetmap.de/josmfile?page=Presets/Playground_Equipment&zip=1 + https://josm.openstreetmap.de/josmfile?page=Presets/Telecom&zip=1 + <josm.userdata>/EasyPresets.xml + https://github.com/kendzi/Simple3dBuildingsPreset/releases/download/0.9_2018-05-08/s3db-preset.zip Map paint styles: - https://josm.openstreetmap.de/josmfile?page=Styles/Lane_features&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/Enhanced_Lane_and_Road_Attributes&zip=1 - https://raw.githubusercontent.com/species/josm-preset-traffic_sign_direction/master/direction.mapcss + https://josm.openstreetmap.de/josmfile?page=Styles/ParkingLanes&zip=1 + https://raw.githubusercontent.com/yopaseopor/traffic_signs_style_JOSM/master/Styles_Traffic_signs_AME.zip + https://josm.openstreetmap.de/josmfile?page=Styles/Sidewalks&zip=1 - https://raw.githubusercontent.com/yopaseopor/indoormap/master/indoormap-style.mapcss + https://josm.openstreetmap.de/josmfile?page=Styles/Building_Levels_Labels&zip=1 - https://raw.githubusercontent.com/OpenSidewalks/OpenSidewalks-Schema/master/open_sidewalks.mapcss - https://josm.openstreetmap.de/josmfile?page=Styles/SimpleBuildingTags&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/SimpleRoofTags&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/TreeCrownDiameter&zip=1 - https://raw.githubusercontent.com/species/josm-preset-wheelchair/master/sidewalks_kerbs.mapcss - https://josm.openstreetmap.de/josmfile?page=Styles/PublicTransport&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/AddressValidator&zip=1 - https://josm.openstreetmap.de/josmfile?page=Styles/PublicTransportV2&zip=1 + https://josm.openstreetmap.de/josmfile?page=Styles/TigerReviewedNo&zip=1 + https://josm.openstreetmap.de/josmfile?page=Styles/FixmeAndNote&zip=1 + https://josm.openstreetmap.de/josmfile?page=Styles/Lit&zip=1 + https://josm.openstreetmap.de/josmfile?page=Styles/MapillaryDetections&zip=1 Last errors/warnings: - 02083.456 W: java.io.IOException: HTTP/1.1 header parser received no bytes. Cause: java.io.IOException: HTTP/1.1 header parser received no bytes. Cause: java.net.SocketException: Connection reset - 02100.721 W: java.io.IOException: HTTP/1.1 header parser received no bytes. Cause: java.io.IOException: HTTP/1.1 header parser received no bytes. Cause: java.net.SocketException: Connection reset - 02100.721 W: java.io.IOException: HTTP/1.1 header parser received no bytes. Cause: java.io.IOException: HTTP/1.1 header parser received no bytes. Cause: java.net.SocketException: Connection reset - 02120.737 W: restricted header name: "Connection" - 02120.913 W: restricted header name: "Connection" - 02430.197 W: restricted header name: "Connection" - 02430.373 W: restricted header name: "Connection" - 02582.297 W: java.io.IOException: Connection reset. Cause: java.net.SocketException: Connection reset - 02699.700 W: restricted header name: "Connection" - 02699.879 W: restricted header name: "Connection"
Attachments (0)
Change History (12)
comment:1 by , 2 years ago
Description: | modified (diff) |
---|
comment:3 by , 2 years ago
Same thing also happens to me from time to time, but I think I have found a workaround that does not require restarting josm:
When keyboard input stops working, open up the settings window, navigate to "Advanced Preferences" and double click on any of the value entry fields as if you wanted to change it. Text input should start working again after that. No, I have no idea why that works.
Presumably any text input field like that where you have to double click to change it to edit mode would work, but the advanced settings window is easy to navigate to and has plenty of those fields.
comment:4 by , 2 years ago
Keywords: | linux added |
---|
Possible duplicate: #16746
I've encountered this before (several years back), but I didn't have a debug environment set up at the time.
I don't think we've changed anything related to text input in quite some time.
Best guess: something is "consuming" the KeyEvent before it reaches the text input field. Adding a breakpoint on InputEvent#consume (filter on this instanceof KeyEvent
) will help debug the problem, but first someone with a dev environment will have to encounter it.
comment:5 by , 2 years ago
comment:6 by , 2 years ago
The big problem with trying to track down this bug is that it usually only randomly happens after hour long editing sessions. That makes reproducing it pretty hard.
follow-up: 9 comment:7 by , 2 years ago
Yep. I think the workflow would be starting JOSM attached to a debugger, edit until input stops working, then add the breakpoint. Still very hard to reproduce, since we don't know what actually causes it.
comment:8 by , 2 years ago
It seems that having more objects loaded will make the bug happen more frequently. I downloaded along https://www.openstreetmap.org/relation/12091974 and it happened almost every time I tried to add a stop. It seemed to only happen after opening a preset with the F3 menu, not when opening it from a dropdown or adding tags individually. The search bar in the F3 menu does work though. It's been a while since I've used a Java debugger, but I'll see what I can do.
follow-up: 10 comment:9 by , 2 years ago
Replying to taylor.smock:
Yep. I think the workflow would be starting JOSM attached to a debugger, edit until input stops working, then add the breakpoint. Still very hard to reproduce, since we don't know what actually causes it.
With the breakpoint in place, KeyEvents were firing as I would expect. I disabled the breakpoint, and edited until the problem occurred. I then re-enabled the breakpoint and pressed F3. Pressing enter had no effect (it would normally open the most recent preset) and the debugger did not break. Opening a preset menu with the mouse and trying to type in a box also did not have any effect and the debugger did not break. Clicking the Cancel button on either popup does fire two KeyEvents.
Unfortunately, I don't have enough experience with Java or JOSM to be able to debug further.
comment:10 by , 2 years ago
Replying to AntiCompositeNumber:
Unfortunately, I don't have enough experience with Java or JOSM to be able to debug further.
I hadn't expected you to do the debugging. But thanks for trying to do so anyway.
Pressing enter had no effect (it would normally open the most recent preset) and the debugger did not break. Opening a preset menu with the mouse and trying to type in a box also did not have any effect and the debugger did not break. Clicking the Cancel button on either popup does fire two KeyEvents.
With the information you gave, it sounds like Java might not be receiving the key events immediately. Do you see what key code the KeyEvents were for? KeyEvent.VK_ENTER == '\n' == 10
is what I would expect for the last one, with the first one being something else (whatever you typed).
If you don't know/don't remember, don't worry about it. I'll try to reproduce on a Raspberry Pi.
comment:11 by , 2 years ago
I've managed to reproduce, but it is making no sense to me. It is more like the text boxes are not accepting input at all (I cannot even select text in the text box).
Java is getting key events, so I'm going to have to trace the "standard" expected call tree and see where the non-working call tree fails.
EDIT: It looks like part of the problem is that the window isn't getting focus events.
EDIT2: Part of the problem appears to be due to KeyboardFocusManager
not getting a request (and maybe not removing one -- TaggingPresetSearchDialog.instance
was the last "focused" component both times I've reproduced and checked).
Removing
ibus
may help.From my notes at https://github.com/matkoniecz/recovery-with-ansible/blob/master/roles/prepare_system_for_josm/tasks/main.yml :
I think I finally tracked down what was freezing keyboard input in JOSM,
what was plaguing me for years.
I removed ibus package from my Linux laptop some time ago what
seemingly removed issue.
https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/481656
https://bugzilla.redhat.com/show_bug.cgi?id=1145725
Found via <java program losing keyboard input> internet search.
I currently have neither ibus nor this problem.
suddenly too small windows remain unsolved - see https://josm.openstreetmap.de/ticket/22531