X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-3.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org MIME-Version: 1.0 In-Reply-To: <20121221103241.GD18188@calimero.vinschen.de> References: <50C2498C DOT 2000003 AT coverity DOT com> <50C276AC DOT 9090301 AT mailme DOT ath DOT cx> <50D401EF DOT 9040705 AT coverity DOT com> <20121221103241 DOT GD18188 AT calimero DOT vinschen DOT de> Date: Fri, 21 Dec 2012 12:15:09 +0000 Message-ID: Subject: Re: Intermittent failures retrieving process exit codes From: Nick Lowe To: Andrey Repin Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Briefly casting my eye at the test case, as a general point, remember that these termination APIs all complete asynchronously and I do not believe it has ever been safe or correct to call another while one is still pending - you are in undefined, edge case behaviour territory here. Win32's TerminateThread/ExitThread, that in turn calls the native NtTerminateThread, only requests cancellation of a thread and returns immediately. One has to wait on a handle to the thread know that termination has completed, for which the synchronise standard access right is required. The same is true of Win32's TerminateProcess/ExitProcess, in turn NtTerminateProcess, where one waits instead on a handle to the process. Regards, Nick -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple