Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Random parsing/rendering bugs when input arrives slowly #3086

Open
egmontkob opened this issue Oct 5, 2019 · 2 comments
Open

Random parsing/rendering bugs when input arrives slowly #3086

egmontkob opened this issue Oct 5, 2019 · 2 comments
Labels
Area-VT Virtual Terminal sequence support Help Wanted We encourage anyone to jump in on these. Issue-Bug It either shouldn't be doing this or needs an investigation. Product-Conhost For issues in the Console codebase
Milestone

Comments

@egmontkob
Copy link

Environment

Windows build number: Win32NT 10.0.18362.0
Windows Terminal version (if applicable): 0.5.2762.0

Steps to reproduce

This bug sounds similar to #3080 and #3081, but this time all the escape sequences are supported by WT, and I don't have a fully reproducible test case, it all seems random.

Resize the terminal to 28 rows (my default due to bug 2061, nevermind).

Execute this a couple of times:

slowcat -t 200000 parsing-delay.txt

whereas slowcat is shipped with VTE and does exactly what you would think, with the parameter being in microseconds, i.e. prints one byte every 0.2 seconds in the above example; and

parsing-delay.txt is the test file stripped down as much as I had patience.

Modify the numeric parameter in the ballpark of 200000 – 350000 (i.e. ~3–5 bytes per second) as you feel like, I have no idea if it influences the behavior, sometimes it feels so but it could just be random. :)

Note that at the end of the command, you're left on the alternate screen. It switches to the normal screen for a short time in the middle and then back to the alternate one.

Expected behavior

The same thing should happen all the time as you repeat this command (except at the first time when you begin on the normal screen), without the spurious random 1 and h described below.

Actual behavior

When switched back to the normal screen for a short time, sometimes a digit 1 appears in the bottom left corner. Even more interestingly, the number of such 1s in that row keeps growing, despite the cursor being explicitly moved to row 28 column 1 every time. (And changing that to column 2 keeps it a digit 1 that appears, so it's not where it comes from.)

When switched back to the alternate screen, sometimes a letter h appears at the top left.

Both artifacts occur to me with a probability of perhaps 25–50-ish %. Play with the timing constant if they don't want to appear to you, it might make a difference, I'm not sure.

@ghost ghost added Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting Needs-Tag-Fix Doesn't match tag requirements labels Oct 5, 2019
@egmontkob
Copy link
Author

(I started a script, and within that launched mc in a way that it starts with an error dialog due to the skin not being supported. I replayed the resulting typescript log using slowcat and noticed random characters appearing. Then I tried to track down the exact point where things go wrong. This is how I discoved these three bugs, and there can easily be more along these lines.)

@DHowett-MSFT
Copy link
Contributor

It looks like when we fail to set the scrolling region (and I'm sure a great number of other things!), we fail the sequence that requested the invalid scrolling region, and conhost converts a failed sequence execution into a "send it to the terminal on the other side, it might know what to do with it." Then, because of #3081, we just send along the r.

We almost certainly need the tri-state "I handled this", "You should handle this", and "There's nothing of value to be done with this" during VT parsing and execution.

@DHowett-MSFT DHowett-MSFT added Area-VT Virtual Terminal sequence support Issue-Bug It either shouldn't be doing this or needs an investigation. Product-Conhost For issues in the Console codebase labels Oct 8, 2019
@ghost ghost removed the Needs-Tag-Fix Doesn't match tag requirements label Oct 8, 2019
@DHowett-MSFT DHowett-MSFT removed the Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting label Oct 29, 2019
@DHowett-MSFT DHowett-MSFT added this to the Console Backlog milestone Oct 29, 2019
@DHowett-MSFT DHowett-MSFT added the Help Wanted We encourage anyone to jump in on these. label Oct 29, 2019
@zadjii-msft zadjii-msft modified the milestones: Console Backlog, Backlog Jan 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-VT Virtual Terminal sequence support Help Wanted We encourage anyone to jump in on these. Issue-Bug It either shouldn't be doing this or needs an investigation. Product-Conhost For issues in the Console codebase
Projects
None yet
Development

No branches or pull requests

3 participants