xtermjs / xterm.js

A terminal for the web
https://xtermjs.org/
MIT License
17.64k stars 1.63k forks source link

Terminals render gobbled text in VSCode (browser) on gitpod.io #4483

Open geropl opened 1 year ago

geropl commented 1 year ago

When using terminals on gitpod.io, sometimes the rendering of terminals is broken, and looks like this: image (Notice the blank areas. Sometimes it shows gobbled characters instead)

When selecting some text in the terminal, it renders correctly though, so the buffer itself seems fine.

This problem is sticky to the tab:

Happy to provide more input, but not sure what would help in this case! :pray:

Potentially related: https://github.com/xtermjs/xterm.js/issues/3600

Details

Steps to reproduce

  1. Start some workspaces on gitpod.io, using "VSCode Browser"
  2. Repeat until you hit one with broken terminals (seems to be around a 10% chance)
jerch commented 1 year ago

Hmm, this indeed needs more info/testing on your side to get down to the issue behind.

Can you repro this on the xterm.js demo with your system? Problem here is the indirection with gitpod --> vscode in between before getting to xterm.js mechs, which adds complexity and more potential "issue surface".

2. Repeat until you hit one with broken terminals (seems to be around a 10% chance)

Does this only happen for late terminals? Like it is never happening for the early ones? Because there might be a chance that you run into context creation issues by the browser engine for the renderer. With which renderer do see this? If its only webgl, then maybe your engine runs out of gl contexes, if it also happens with the canvas renderer, then maybe there is something wrong with the char atlas.

Maybe related: https://github.com/xtermjs/xterm.js/issues/4480, https://github.com/xtermjs/xterm.js/issues/4379

I doubt that this one is related to #3600, as this is mostly because of keyboard issues under android.

Tyriar commented 1 year ago

This could be fixed in gitpod with https://github.com/microsoft/vscode/pull/181359?