Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <19990927134217.32939.qmail@hotmail.com> X-Originating-IP: [208.230.244.191] From: "luca landi" To: cygwin AT sourceware DOT cygnus DOT com Subject: problem running make 3.77.94 inside bash with the 19990830 snap-shot Date: Mon, 27 Sep 1999 13:42:16 GMT Mime-Version: 1.0 Content-Type: text/plain; format=flowed Hello, I have solved my previous problems with cygnus B20.1 regarding the hanging processes (see my previous note...) using the 19990830 snap-shot. Now I have another strange problem with this level of tools. I got the following error message when I run the make (rel. 3.77.94) >/cygdrive/d/Y2K/990915/prod/w32-ix86>make build-tree >C:/gk/bin/sh.exe -c "init-build-tree d:/Y2K/990915/src/. " >process_easy: DuplicateHandle(In) failed (e=6) >make: Interrupt/Exception caught (code = 0xc0000005, addr = >0x416554) >/cygdrive/d/Y2K/990915/prod/w32-ix86> It appears that new cygwin.dll or bash.exe is causing some problem with console handling. In the case above, bash is run inside a command shell window and then make is launched as a child process of the shell. The error above appears to be related to handling of stdin. What should happen is that make is trying to duplicate a copy of stdin to pass to child process as default stdin for the child. However, the call to DuplicateHandle() (a WIN32 API) is failing because of an e=6. This is >// >// MessageId: ERROR_INVALID_HANDLE >// >// MessageText: >// >// The handle is invalid. >// >#define ERROR_INVALID_HANDLE 6 > So, somehow bash and/or cygwin is incorrectly closing or otherwise damaging the stdin handle for child processes. This means that pure WIN32 programs that wish to use stdin (as in the case above) will fail. the code which is failing, seems to be the following: >HANDLE >process_easy( > char **argv, > char **envp) >{ > HANDLE hIn; > HANDLE hOut; > HANDLE hErr; > HANDLE hProcess; > > if (DuplicateHandle(GetCurrentProcess(), > GetStdHandle(STD_INPUT_HANDLE), > GetCurrentProcess(), > &hIn, > 0, > TRUE, > DUPLICATE_SAME_ACCESS) == FALSE) { > fprintf(stderr, > "process_easy: DuplicateHandle(In) failed (e=%d)\n", > GetLastError()); > return INVALID_HANDLE_VALUE; > } Thanks in advance for your precious help. Ciao Luca ______________________________________________________ Get Your Private, Free Email at http://www.hotmail.com -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com