summaryrefslogtreecommitdiff
path: root/driver/utils
diff options
context:
space:
mode:
authorTamar Christina <tamar@zhox.com>2017-03-14 13:31:36 -0400
committerBen Gamari <ben@smart-cactus.org>2017-03-14 15:10:13 -0400
commit4b673e804fb8598dac02596f107544c7f2ea263b (patch)
tree157bc270bbcc493e1debaf11c4f8d5bd7768046f /driver/utils
parent67345ccf51538acf2b6452c738ba641b119f5a5e (diff)
downloadhaskell-4b673e804fb8598dac02596f107544c7f2ea263b.tar.gz
Fix Windows GCC driver
In Windows 10 Insiders build 15019+ which will probably be released mainstream somewhere this year Microsoft seems to have started being stricter with API calls. The call to `FreeConsole` just after `CreateProcess` is making Windows treat the process as an interactive process. In which case it tries to use the `Desktop session` but fails resulting in the cryptic error reported. I don't understand why the call to `FreeConsole` was there and it doesn't seem to be needed, so removed. This fixes #13411 Test Plan: ./validate, alternative just do anything with ghc which requires compilation. Reviewers: austin, bgamari, simonmar Reviewed By: bgamari Subscribers: rwbarton, thomie, #ghc_windows_task_force Differential Revision: https://phabricator.haskell.org/D3319
Diffstat (limited to 'driver/utils')
-rw-r--r--driver/utils/cwrapper.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/driver/utils/cwrapper.c b/driver/utils/cwrapper.c
index 5105924b74..da6cec4bc3 100644
--- a/driver/utils/cwrapper.c
+++ b/driver/utils/cwrapper.c
@@ -130,11 +130,9 @@ __attribute__((noreturn)) int run (char *exePath,
&pi) ) {
die("Unable to start %s (error code: %lu)\n", exePath, GetLastError());
}
- /* Disable handling of console events in the parent by dropping its
- * connection to the console. This has the (minor) downside of not being
- * able to subsequently emit any error messages to the console.
- */
- FreeConsole();
+
+ /* Synchronize input and wait for target to be ready. */
+ WaitForInputIdle(pi.hProcess, INFINITE);
switch (WaitForSingleObject(pi.hProcess, INFINITE) ) {
case WAIT_OBJECT_0: