Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
runc run/exec: fix terminal wrt stdin redirection
This fixes the following failure: > sudo runc run -b bundle ctr </dev/null > WARN[0000] exit status 2 > ERRO[0000] container_linux.go:367: starting container process caused: process_linux.go:459: container init caused: The "exit status 2" with no error message is most probably caused by the panic in console.Current(), and is addressed by [1]. Otherwise, the issue here is simple: the code assumes stdin is opened to a terminal, and fails to work otherwise. Some standard Linux tools (e.g. stty, top) do the same (modulo panic), while some others (reset, tput) use the trick of trying all the three std streams (starting with stderr as it is least likely to be redirected), and if all three fails, open /dev/tty. This commit does the same, except that /dev/tty is not tried. It also replaces the call to console.Current() which might panic by reusing the t.hostConsole. Fixes: opencontainers#2485 [1] containerd/console#37 Signed-off-by: Kir Kolyshkin <[email protected]>
- Loading branch information