From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14782 invoked by alias); 11 Jan 2008 17:21:21 -0000 Received: (qmail 14762 invoked by uid 22791); 11 Jan 2008 17:21:18 -0000 X-Spam-Check-By: sourceware.org Received: from ics.u-strasbg.fr (HELO ics.u-strasbg.fr) (130.79.112.250) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 11 Jan 2008 17:20:52 +0000 Received: from ICSMULLER (laocoon.u-strasbg.fr [130.79.112.72]) by ics.u-strasbg.fr (Postfix) with ESMTP id 846B818701A for ; Fri, 11 Jan 2008 18:24:37 +0100 (CET) From: "Pierre Muller" To: Subject: [RFA] win32-nat.c: Restore wrongly removed code that closes two handles returned by CreateProcess Date: Fri, 11 Jan 2008 17:21:00 -0000 Message-ID: <001301c85476$4eff2fc0$ecfd8f40$@u-strasbg.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 12.0 Content-Language: en-us Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-01/txt/msg00277.txt.bz2 This patch restores two lines of code that I wrongfully removed in a previous patch about problems related to closing of handles that the system should close. The applied patch is: http://sourceware.org/ml/gdb-patches/2007-11/msg00481.html In that patch, I also removed two calls to CloseHandle functions for the two handles that are returned by the CreateProcess function. To make things worse, I forgot to mention that removal in the corresponding ChangeLog. The wrong part of the patch is in win32_create_inferior @@ -1886,9 +1893,6 @@ win32_create_inferior (char *exec_file, error (_("Error creating process %s, (error %d)."), exec_file, (unsigned) GetLastError ()); - CloseHandle (pi.hThread); - CloseHandle (pi.hProcess); - if (useshell && shell[0] != '\0') saw_create = -1; else I was supposing that the handles returned by CreateProcess in the ProcessInformation structure were the same as the handles given in the initial CREATE_PROCESS_DEBUG_EVENT. But these two handles are completely separate, as printing out the values enabled me to see. The handles returned by CreateProcess are given to any program launching another executable, while the other handles are debugger specific. The purpose of that patch was about avoiding to close the handles that are given on debug events, as stated in the windows API documentation. But the same docs do specify that the two handles returned in the ProcessInformation structure need to be closed. I ran the testsuite on that patch and found no change, but the missing CloseHandle calls might still have some influence on other cases. Luckily no gdb release contains that error. Christopher, should I modify the ChangeLog-2007 entry that contains the bad removal of that code, as the entry is incomplete? Sorry about this mistake, Pierre Muller ChangeLog entry: 2008-01-11 Pierre Muller * win32-nat.c (win32_create_inferior): Restore code calling CloseHandle on ProcessInformation structure. $ cvs diff -up gdb/win32-nat.c Index: gdb/win32-nat.c =================================================================== RCS file: /cvs/src/src/gdb/win32-nat.c,v retrieving revision 1.146 diff -u -p -r1.146 win32-nat.c --- gdb/win32-nat.c 6 Jan 2008 06:59:14 -0000 1.146 +++ gdb/win32-nat.c 11 Jan 2008 17:08:40 -0000 @@ -1880,6 +1880,9 @@ win32_create_inferior (char *exec_file, error (_("Error creating process %s, (error %d)."), exec_file, (unsigned) GetLastError ()); + CloseHandle (pi.hThread); + CloseHandle (pi.hProcess); + if (useshell && shell[0] != '\0') saw_create = -1; else