Hi Eric,
On 12/8/21 3:56 PM, Eric Pouech wrote:
some PE executables (like mingw's gdb port) just do something like:
- WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), INFINITE) and hang for ever (the read operations are done*after* the wait operation succeeds)
(of course, the real wait operation is more complex, but the problematic part boils down to that)
this hangs for ever because conhost's main input thread hasn't been started yet
this patch sends once a peek IOCTL before waiting, hence ensuring conhost's main input stream has been started
this lets i686 and x64_86 mingw's gdb port to accept user's input
(this is second attempt to fix this bug, based on Jacek's feedback on first try)
I think this is a good solution in general. Looking closer, we will also need it for console_ops as well. Those are two different objects: one is meant for handles operating on currently attached console while the other is always attached to specific console.
I'd suggest setting the initialization flag in IOCTL_CONDRV_SETUP_INPUT as a cheap optimization for cases when input is read before waiting. Please keep white space changes consistent with server style.
Thanks,
Jacek