From 8cf7e3f614a0ca1296e76f6930b9d1cd908b9bbd Mon Sep 17 00:00:00 2001 From: corinna Date: Sat, 8 Aug 2009 20:24:54 +0000 Subject: [PATCH] * dtable.cc (dtable::init_std_file_from_handle): Fix comment to document change in the Windows 7 workaround. * wincap.cc (wincapc::init): Don't set has_console_handle_problem to false on 32 bit systems. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/dtable.cc | 30 ++++++++++++------------------ winsup/cygwin/wincap.cc | 1 - 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 10cb43e72a..36eb089751 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2009-08-08 Corinna Vinschen + + * dtable.cc (dtable::init_std_file_from_handle): Fix comment to + document change in the Windows 7 workaround. + * wincap.cc (wincapc::init): Don't set has_console_handle_problem + to false on 32 bit systems. + 2009-08-06 Corinna Vinschen * net.cc (cygwin_getnameinfo): Force setting NI_NUMERICSERV only diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index aa4c6e7f66..e7943c4c66 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -360,26 +360,20 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle) else access |= GENERIC_WRITE; /* Should be rdwr for stderr but not sure that's possible for some versions of handles */ - /* FIXME: Workaround Windows 7 64 bit issue. If the parent process of + /* FIXME: Workaround Windows 7 issue. If the parent process of the process tree closes the original handles to the console window, strange problems occur when starting child processes later on if - stdio redirection is used. How to reproduce: - - shell script foo: - - exec 2>foo.log - FOO=$( uname -n | cat ) - echo $FOO - - start from cmd with `bash foo'. The result is that the cat process - will be started but dies before Cygwin strace output can be generated - and $FOO stays empty. The strace output shows that bash tries - multiple times to start cat, but none of the invocations of cat will - ever show up in the strace output. - - Remove the `exec 2>' or remove the cat call and the script will work. - Start bash interactively, then start the script manually, and the - script will work. + stdio redirection is used. + + CV 2009-08-08: It looks like this problem has been fixed only + half-heartedly in RTM. Unfortunately the new implementation + has still a problem which now also occurs on the 32 bit release + of Windows 7. It's still not quite clear what happens but it's + easily reproducible. Just start X via the start menu entry. + This opens an xterm window with a shell. Exit from the shell, + and you get a Windows error box reporting a crash in the + Console Window Host application (conhost.exe) due to an access + violation. This needs further investigation but the workaround not to close the handles will have a marginal hit of three extra handles per diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 84e530d3f1..7277d5f638 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -551,7 +551,6 @@ wincapc::init () { ((wincaps *)caps)->needs_count_in_si_lpres2 = false; ((wincaps *)caps)->has_restricted_stack_args = false; - ((wincaps *)caps)->has_console_handle_problem = false; } __small_sprintf (osnam, "NT-%d.%d", version.dwMajorVersion, -- 2.11.0