Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-ID: <3BCFFB48.1E2B85F7@syntrex.com> Date: Fri, 19 Oct 2001 12:07:04 +0200 From: Pavel Tsekov Organization: Syntrex Inc. X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.4.2-2 i686) X-Accept-Language: en MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: simple execvp test References: <3BCECA31 DOT 4FE7AAD2 AT syntrex DOT com> <20011018171144 DOT B19399 AT redhat DOT com> <3BCFF639 DOT B4F5CF47 AT syntrex DOT com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Pavel Tsekov wrote: > > I'm looking at the spawn_guts code to see if > there is something in this setup which may > broke execvp. > Btw I found something which may broke spawn_guts, though I dont think this is the case with James - see below: This code is from spawn_guts - the interesting thing about it is that it doesn set the errno (__seterrno()) if the DuplicateHandle doesnt succeed. All the other Win32 apis which a called though the spawn_guts set the errno if they fail. So if we have execvp which loops through the PATH while it finds the executable thus executing spawn_guts many times most of which it fails with ENOENT and if spawn_guts fail to duplicate handle the errno will still be set to ENOENT which is not correct, maybe :) if (!DuplicateHandle (hMainProc, hMainProc, hMainProc, &ciresrv.parent, 0, 1, DUPLICATE_SAME_ACCESS)) { system_printf ("couldn't create handle to myself for child, %E"); return -1; } -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/