This is a tracking/discussion issue for stdout and stderr output escaping.
This is pretty generic problem, however normally not that many programs face it.
My example
In Mainframer we pipe output from ssh to the Rust program's stdout and stderr respectively.
If ssh is forced to run in interactive mode (-t) where pseudo-terminal is allocated and the program we're running via ssh does some complicated progress output (Gradle build system) it can lead to Terminal state being corrupted.
Generic example
If you cat some binary file, there is a good chance it'll break Terminal state.
To my understanding, some unexpected control symbols leak through stdout/stderr and break Terminal state.
Hacky Solutions
In some cases (not my though) running:
After the Rust program will fix Terminal.
In my case, running:
Fixes the Terminal.
This is a tracking/discussion issue for
stdoutandstderroutput escaping.This is pretty generic problem, however normally not that many programs face it.
My example
In Mainframer we pipe output from
sshto the Rust program'sstdoutandstderrrespectively.If
sshis forced to run in interactive mode (-t) where pseudo-terminal is allocated and the program we're running viasshdoes some complicated progress output (Gradle build system) it can lead to Terminal state being corrupted.Generic example
If you
catsome binary file, there is a good chance it'll break Terminal state.To my understanding, some unexpected control symbols leak through stdout/stderr and break Terminal state.
Hacky Solutions
In some cases (not my though) running:
$ resetAfter the Rust program will fix Terminal.
In my case, running:
$ stty saneFixes the Terminal.