Race condition at the end of hot code replacement causes inconsistent UI state
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 38/100
Rechercherichtung
Beginnen Sie mit JavaHotCodeReplaceProvider.redefineClasses() und stepIntoThread(ThreadReference), und untersuchen Sie anschließend ProtocolServer.sendEvent(DebugEvent) sowie dessen Behandlung von StoppedEvent und ContinuedEvent. Reproduzieren Sie das Timing von StepEvent oder verfolgen Sie es nach, und betrachten Sie das Issue als erledigt, wenn die VS Code UI den Zielprozess nach dem Hot Code Replace konsistent als angehalten widerspiegelt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
At the end of JavaHotCodeReplaceProvider.redefineClasses() execution JavaHotCodeReplaceProvider.stepIntoThread(ThreadReference) is called which sends JDI StepRequest to the target process and subscribes for StepEvent, on reception of which the following events for the UI are populated in that order:
context.getProtocolServer().sendEvent(new Events.StoppedEvent("step", thread.uniqueID()));
context.getProtocolServer().sendEvent(new Events.ContinuedEvent(thread.uniqueID()));
However, ProtocolServer.sendEvent(DebugEvent) usually reverses this order by putting StoppedEvent to the event queue until ProtocolServer command processing (redefineClasses in this case) has completed. All other types of events are sent immediately. As JDI StepRequest is usually processed very quickly by the target process, the usual order for the VS Code UI to receive the events is ContinuedEvent > StoppedEvent. In contrast, if StepRequest processing happens to be slow then StoppedEvent is sent first and ContinuedEvent as the final one. In that case the Debug toolbar in VS Code UI will be shown like in running state with Stop button while the target process is still suspended.
- Vorherrschende Sprache
- Java
- Sterne
- 409
- Forks
- 204
- Ø Merge
- 1 T. 13 Std.
- Gemergte PRs (30 T.)
- 4
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/java-debug
-
ai-triaged bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
microsoft/java-debug#611 · 2 Kommentare ·
-
ai-triaged enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
microsoft/java-debug#608 · 3 Kommentare ·
-
ai-triaged question
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
microsoft/java-debug#597 · 1 Kommentar ·
-
ai-triaged bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
microsoft/java-debug#588 · 1 Kommentar ·
-
ai-triaged question
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 35/100
microsoft/java-debug#582 · 1 Kommentar ·
Alle Issues in microsoft/java-debug
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
elastic/gradle-plugins#157 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
cryptomator/hub#497 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
johanhaleby/occurrent#1120 ·