From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29414 invoked by alias); 7 Apr 2014 17:09:24 -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 29404 invoked by uid 89); 7 Apr 2014 17:09:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 07 Apr 2014 17:09:22 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s37H9JHg024408 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 7 Apr 2014 13:09:19 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s37H9H8A032351; Mon, 7 Apr 2014 13:09:18 -0400 Message-ID: <5342DBBC.4090500@redhat.com> Date: Mon, 07 Apr 2014 17:09:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: Eli Zaretskii CC: brobecker@adacore.com, gdb-patches@sourceware.org Subject: Re: [PATCH] Fix "PC register is not available" issue References: <83txawa9wk.fsf@gnu.org> <20140318161608.GD4282@adacore.com> <83pplja2h9.fsf@gnu.org> <20140318165413.GE4282@adacore.com> <834n2kztfw.fsf@gnu.org> <53358C37.9050907@redhat.com> <83a9cafcpz.fsf@gnu.org> <5335B619.6040605@redhat.com> <8361myfa6l.fsf@gnu.org> <83ioqucrkw.fsf@gnu.org> In-Reply-To: <83ioqucrkw.fsf@gnu.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2014-04/txt/msg00081.txt.bz2 On 03/31/2014 04:31 PM, Eli Zaretskii wrote: >> Date: Fri, 28 Mar 2014 21:30:10 +0300 >> From: Eli Zaretskii >> Cc: brobecker@adacore.com, gdb-patches@sourceware.org >> >>> Date: Fri, 28 Mar 2014 17:49:13 +0000 >>> From: Pedro Alves >>> CC: brobecker@adacore.com, gdb-patches@sourceware.org >>> >>>>> Why bother calling SetThreadContext at all if we just killed >>>>> the process? >>>> >>>> See my other mail and Joel's response. >>> >>> Not sure what you mean. TerminateProcess is asynchronous, and >>> we need to resume the inferior and collect the debug events >>> until we see the process terminate. But, my question is >>> why would we write the thread's registers at all if we >>> just told it to die? Seems to be we could just skip >>> calling SetThreadContext instead of calling it but >>> ignoring the result. >> >> If you say so, I don't know enough about this stuff. > > Actually, upon second thought: we continue the inferior after > TerminateProcess call to let it be killed, right? If so, shouldn't we > continue it with the right context? I don't think the threads are going to run whatever context you set them them to. They'll surely die before ever getting scheduled to run any further userspace code? > >>>>> Sounds like GDBserver might have this problem too. >>>> >>>> If there's an easy way to verify that, without having 2 systems >>>> talking via some communications line, please tell how, and I will try >>>> that. >>> >>> Sure, you can run gdbserver and gdb on the same machine, and connect >>> with tcp. Just: >>> >>> $ gdbserver :9999 myprogram.exe >>> >>> in one terminal, and: >>> >>> $ gdb myprogram.exe -ex "tar rem :9999" -ex "b main" -ex "c" >>> >>> in another. >> >> OK, will try that. > > Funnily enough, I cannot get GDBserver to emit similar warnings in the > same situation. I don't understand the reasons for that, since the > code is very similar, and with a single exception, we do check the > return values of calls to GetThreadContext, SetThreadContext, and > SuspendThread in GDBserver. But the fact remains that no warnings > about these threads are ever seen when debugging remotely. I do see > the extra threads under GDBserver as well. GDBserver's warnings are guarded by 'if (debug_threads)' (see OUTMSG2). That means you'll need to start gdbserver with --debug to see them. Did you do that? -- Pedro Alves