Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

windows: Why `initStdios` ignores `GetConsoleMode` errors?

Open
#58 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
go

Research direction

Start in console_windows.go, especially the initStdios and newMaster code around lines 32-67, and trace how GetConsoleMode failures are handled for redirected standard handles. Compare the behavior with the linked containerd/console implementation and verify whether returning an error or opening CONIN$/CONOUT$ preserves expected SetConsoleMode behavior. Done means the handling is decided and covered by an appropriate test or documented rationale.

Written by the indexing model from the issue text.

Description

Hey there,
Frankly good designed library.

Specifically I am not aware how golang std works but if it gets its streams using GetStdHandle GetConsoleMode will fail if a stream was redirected.
https://stackoverflow.com/questions/33476316/win32-getconsolemode-error-code-6

GetConsoleMode takes A handle to the console input buffer or the console screen buffer.
https://docs.microsoft.com/en-us/windows/console/getconsolemode

The standard handles of a process may be redirected by a call to SetStdHandle, in which case GetStdHandle returns the redirected handle. If the standard handles have been redirected, you can specify the CONIN$ value in a call to the CreateFile function to get a handle to a console's input buffer. Similarly, you can specify the CONOUT$ value to get a handle to a console's active screen buffer.
https://docs.microsoft.com/en-us/windows/console/getstdhandle

If this is the case it could be handled by oppening CONIN CONOUT. (I am not sure though how SetConsoleMode will work on such handles).

But my point is if GetConsoleMode fails maybe it'd better to return error in newMaster?

https://github.com/containerd/console/blob/05dadd92d21fc51f0bf56eadcb4201955cfc98d8/console_windows.go#L32-L67

Thank you.

Dominant language
Go
Stars
201
Forks
60
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from containerd/console

All issues in containerd/console

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.