redhat-developer / redhat-developer/vscode-java
Extension hangs with org.eclipse.jface.text.BadLocationException
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 2.3k
- Forks
- 546
- Ø Merge
- 20 Std. 1 Min.
- Gemergte PRs (30 T.)
- 11
Beschreibung
Pretty often when I am refactoring my code and there (one or two files contain pretty broken code) - extension hangs and all it's features stop working.
Restarting VSCode fixes the issue.
My project is super simple (5 classes), has rudimentary pom.xml.
Output window for Language Support for Java shows this error:
[Error - 9:07:53 PM] Aug 1, 2018 9:07:02 PM
null
org.eclipse.jface.text.BadLocationException
at org.eclipse.jface.text.TreeLineTracker.fail(TreeLineTracker.java:1051)
at org.eclipse.jface.text.TreeLineTracker.lineByOffset(TreeLineTracker.java:265)
at org.eclipse.jface.text.TreeLineTracker.getLineNumberOfOffset(TreeLineTracker.java:1119)
at org.eclipse.jface.text.AbstractLineTracker.getLineNumberOfOffset(AbstractLineTracker.java:151)
at org.eclipse.jface.text.AbstractDocument.getLineOfOffset(AbstractDocument.java:868)
at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineOfOffset(SynchronizableDocument.java:331)
at org.eclipse.jdt.ls.core.internal.handlers.JsonRpcHelpers.toLine(JsonRpcHelpers.java:60)
at org.eclipse.jdt.ls.core.internal.JDTUtils.toRange(JDTUtils.java:466)
at org.eclipse.jdt.ls.core.internal.JDTUtils.toLocation(JDTUtils.java:380)
at org.eclipse.jdt.ls.core.internal.JDTUtils.toLocation(JDTUtils.java:342)
at org.eclipse.jdt.ls.core.internal.handlers.DocumentSymbolHandler.collectChildren(DocumentSymbolHandler.java:75)
at org.eclipse.jdt.ls.core.internal.handlers.DocumentSymbolHandler.collectChildren(DocumentSymbolHandler.java:68)
at org.eclipse.jdt.ls.core.internal.handlers.DocumentSymbolHandler.getOutline(DocumentSymbolHandler.java:52)
at org.eclipse.jdt.ls.core.internal.handlers.DocumentSymbolHandler.documentSymbol(DocumentSymbolHandler.java:44)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$12(JDTLanguageServer.java:532)
at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$23(JDTLanguageServer.java:732)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602)
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:443)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Same error and stack dump can be found in the log that I open with "Java: Open Java Language Server log file".
(related?) Dev Tools console log contains quite a lot copies of this warning:
WARN Error: listener failed
at workbench.main.js:sourcemap:4061
at Object.g [as _notify] (workbench.main.js:sourcemap:150)
at Object.enter (workbench.main.js:sourcemap:154)
at n.Class.derive._oncancel._run (workbench.main.js:sourcemap:155)
at n.Class.derive._oncancel._completed (workbench.main.js:sourcemap:155)
at e.resolveOk (workbench.main.js:sourcemap:3060)
at e._receiveReply (workbench.main.js:sourcemap:3127)
at e._receiveOneMessage (workbench.main.js:sourcemap:3126)
at workbench.main.js:sourcemap:3125
at workbench.main.js:sourcemap:3128
at e.fire (workbench.main.js:sourcemap:171)
at c (workbench.main.js:sourcemap:302)
at Socket.<anonymous> (workbench.main.js:sourcemap:303)
at emitOne (events.js:96)
at Socket.emit (events.js:191)
at readableAddChunk (_stream_readable.js:178)
at Socket.Readable.push (_stream_readable.js:136)
at Pipe.onread (net.js:560)
I was experiencing the same issue with the previous version of the extension.
When extension hangs, VSCode status bar usually says "Validating document - 0%"
Environment
- Operating System: Win10 v1803
- JDK version: 1.8.0_181
- Visual Studio Code version: 1.25.1
- Java extension version: 0.29.0
Steps To Reproduce
Not quite sure about the pattern or repro yet, but happens like every hour (=pretty often).
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit den Stacktrace-Einträgen in DocumentSymbolHandler, JDTUtils und JsonRpcHelpers, reproduziere dann den Hänger mit fehlerhaften Java-Dateien und untersuche das Protokoll des Java Language Server. Das Problem ist behoben, wenn die Dokumentvalidierung und Erweiterungsfunktionen weiterhin funktionieren, ohne dass ein durch BadLocationException verursachter Hänger auftritt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- developer-experience, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100