From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 33036 invoked by alias); 25 Jun 2018 18:27:39 -0000 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 Received: (qmail 33025 invoked by uid 89); 25 Jun 2018 18:27:39 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=completing, Something, Joel, joel X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 25 Jun 2018 18:27:37 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 4A6B0560DD for ; Mon, 25 Jun 2018 14:27:36 -0400 (EDT) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 3pN360V3NpSC for ; Mon, 25 Jun 2018 14:27:36 -0400 (EDT) Received: from tron.gnat.com (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) by rock.gnat.com (Postfix) with ESMTP id 3B91A560D1 for ; Mon, 25 Jun 2018 14:27:36 -0400 (EDT) Received: by tron.gnat.com (Postfix, from userid 4233) id 3A700454; Mon, 25 Jun 2018 14:27:36 -0400 (EDT) From: Joel Brobecker To: gdb-patches@sourceware.org Subject: [RFA] Fix GDB build failure on Windows Date: Mon, 25 Jun 2018 18:27:00 -0000 Message-Id: <1529951254-45540-1-git-send-email-brobecker@adacore.com> X-SW-Source: 2018-06/txt/msg00583.txt.bz2 Hello, A recent enhancement to use thread_info and inferior pointers more throughout accidently broke the build in windows-nat.c. This patch fixes it by completing the transition for the couple of spots that were missed. gdb/ChangeLog: * windows-nat.c (windows_delete_thread): Make parameter ptid a constant reference. Fix call to delete_thread. Log a DEBUG_EVENTS message if the thread_info corresponding to the given ptid_t could not be found. (windows_nat_target::detach): Fix call to detach_inferior. Tested on x86-windows and x86_64-windows, using AdaCore's testsuite. OK to apply? Thanks, -- Joel --- gdb/windows-nat.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 63a7800..620e25c 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -479,7 +479,7 @@ windows_init_thread_list (void) /* Delete a thread from the list of threads. */ static void -windows_delete_thread (ptid_t ptid, DWORD exit_code) +windows_delete_thread (const ptid_t &ptid, DWORD exit_code) { windows_thread_info *th; DWORD id; @@ -493,7 +493,26 @@ windows_delete_thread (ptid_t ptid, DWORD exit_code) else if (print_thread_events && id != main_thread_id) printf_unfiltered (_("[%s exited with code %u]\n"), target_pid_to_str (ptid), (unsigned) exit_code); - delete_thread (ptid); + + thread_info *tp = find_thread_ptid (ptid); + if (tp != NULL) + delete_thread (tp); + else + { + /* Something unexpected happened: We are trying to delete + a thread that the core layer apparently does not know about. + This should never happen, and thus we want to be able to + report this discrepancy should it actually happen and have + unanticipated side-effects; but since we were trying to + delete the thread anyway, it's quite possible that this + issue has no actual consequence in terms of the overall + behavior. So, instead of unnecessarily worrying the user + with a warning or internal-error, just log a DEBUG_EVENTS + event. */ + DEBUG_EVENTS (("gdb: windows_delete_thread cannot find thread" + " for ptid (pid=%d, tid=%ld)\n", + ptid.pid(), ptid.tid())); + } for (th = &thread_head; th->next != NULL && th->next->id != id; @@ -2000,7 +2019,7 @@ windows_nat_target::detach (inferior *inf, int from_tty) x86_cleanup_dregs (); inferior_ptid = null_ptid; - detach_inferior (current_event.dwProcessId); + detach_inferior (current_inferior ()); maybe_unpush_target (); } -- 2.1.4