From: Pedro Alves <palves@redhat.com>
To: "Metzger, Markus T" <markus.t.metzger@intel.com>
Cc: Jan Kratochvil <jan.kratochvil@redhat.com>,
"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
"markus.t.metzger@gmail.com" <markus.t.metzger@gmail.com>,
"Himpel, Christian" <christian.himpel@intel.com>
Subject: Re: Crash of GDB with gdbserver btrace enabled [Re: [patch v9 00/23] branch tracing support for Atom]
Date: Thu, 07 Mar 2013 15:12:00 -0000 [thread overview]
Message-ID: <5138AE4C.3060801@redhat.com> (raw)
In-Reply-To: <A78C989F6D9628469189715575E55B2307B9C01C@IRSMSX102.ger.corp.intel.com>
On 03/07/2013 12:32 PM, Metzger, Markus T wrote:
>> -----Original Message-----
>> From: Jan Kratochvil [mailto:jan.kratochvil@redhat.com]
>> Sent: Thursday, March 07, 2013 1:07 PM
>
>
>>>> OK, I agree target_close seems excessive here, it also does not correspond to
>>>> the current description of target_close:
>>>> This routine is automatically always called after popping the target
>>>> off the target stack
>>>>
>>>> While it is nice cleanup I find it a separate patch, not required for btrace.
>>>
>>> With this patch, the crash is gone with only minimal changes to btrace.
>>
>> It is only a coincidence and workaround of it.
>
> Hmmm, if we must no longer call methods in a certain target, why is
> removing that target a workaround?
>
> Pedro already moved the target_close call after removing the target in
> http://sourceware.org/ml/gdb-patches/2012-01/msg00701.html.
>
> He just did not consider the extra target_close call in pop_target, which
> is not only closing the target twice but also breaking his attempt to
> reorder target removing and closing.
Indeed, that seems so. The close-twice isn't an issue for current
targets, as their close methods are idempotent:
static void
remote_close (int quitting)
{
if (remote_desc == NULL)
return; /* already closed */
But the reorder issue here does look like should be fixed.
I think the double closes are actually a workaround for the
"quitting" argument not being propagated to unpush_target (or
maybe unpush_target didn't close the target itself at some point):
void
pop_all_targets_above (enum strata above_stratum, int quitting)
{
while ((int) (current_target.to_stratum) > (int) above_stratum)
{
target_close (target_stack, quitting);
if (!unpush_target (target_stack))
...
void
pop_all_targets (int quitting)
{
pop_all_targets_above (dummy_stratum, quitting);
}
...
/* Called by the event loop to process a SIGHUP. */
static void
async_disconnect (gdb_client_data arg)
{
...
TRY_CATCH (exception, RETURN_MASK_ALL)
{
pop_all_targets (1);
}
...
}
QUITTING is documented here:
/* Does whatever cleanup is required for a target that we are no
longer going to be calling. QUITTING indicates that GDB is exiting
and should not get hung on an error (otherwise it is important to
perform clean termination, even if it takes a while). This routine
is automatically always called after popping the target off the
target stack - the target's own methods are no longer available
through the target vector. Closing file descriptors and freeing all
memory allocated memory are typical things it should do. */
void target_close (struct target_ops *targ, int quitting);
I'm not sure, but ISTR that no target nowadays actually does
anything with the 'quitting' flag.
--
Pedro Alves
next prev parent reply other threads:[~2013-03-07 15:12 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-04 17:07 [patch v9 00/23] branch tracing support for Atom Markus Metzger
2013-03-04 17:07 ` [patch v9 03/23] linux, i386, amd64: enable btrace for 32bit and 64bit linux native Markus Metzger
2013-03-05 20:06 ` Jan Kratochvil
2013-03-04 17:07 ` [patch v9 08/23] gdbserver, linux, btrace: add btrace support for linux-low Markus Metzger
2013-03-05 20:09 ` Jan Kratochvil
2013-03-06 9:17 ` Metzger, Markus T
2013-03-06 13:33 ` Jan Kratochvil
2013-03-04 17:07 ` [patch v9 01/23] thread, btrace: add generic branch trace support Markus Metzger
2013-03-05 20:06 ` Jan Kratochvil
2013-03-05 22:02 ` Tom Tromey
2013-03-06 21:11 ` Doug Evans
2013-03-07 7:50 ` Metzger, Markus T
2013-03-07 22:57 ` Doug Evans
2013-03-04 17:07 ` [patch v9 05/23] remote, btrace: add branch trace remote ops Markus Metzger
2013-03-05 20:07 ` Jan Kratochvil
2013-03-06 9:00 ` Metzger, Markus T
2013-03-04 17:07 ` [patch v9 16/23] record: default target methods Markus Metzger
2013-03-05 20:10 ` Jan Kratochvil
2013-03-04 17:07 ` [patch v9 10/23] remote, btrace: add branch tracing protocol to Qbtrace packet Markus Metzger
2013-03-05 20:09 ` Jan Kratochvil
2013-03-06 9:19 ` Metzger, Markus T
2013-03-04 17:07 ` [patch v9 07/23] gdbserver, btrace: add generic btrace support Markus Metzger
2013-03-05 20:08 ` Jan Kratochvil
2013-03-06 9:15 ` Metzger, Markus T
2013-03-06 13:22 ` Jan Kratochvil
2013-03-04 17:07 ` [patch v9 04/23] xml, btrace: define btrace xml document style Markus Metzger
2013-03-05 20:07 ` Jan Kratochvil
2013-03-04 17:07 ` [patch v9 02/23] linux, btrace: perf_event based branch tracing Markus Metzger
2013-03-05 20:06 ` Jan Kratochvil
2013-03-06 10:11 ` Mark Kettenis
2013-03-06 10:29 ` Metzger, Markus T
2013-03-04 17:08 ` [patch v9 20/23] record-btrace, disas: omit pc prefix Markus Metzger
2013-03-05 20:13 ` Jan Kratochvil
2013-03-04 17:08 ` [patch v9 19/23] record, btrace: add record-btrace target Markus Metzger
2013-03-05 20:13 ` Jan Kratochvil
2013-03-06 9:57 ` Metzger, Markus T
2013-03-06 13:35 ` Jan Kratochvil
2013-03-06 14:01 ` Metzger, Markus T
2013-03-06 16:28 ` Jan Kratochvil
2013-03-04 17:08 ` [patch v9 09/23] btrace, x86: disable on some processors Markus Metzger
2013-03-05 20:09 ` Jan Kratochvil
2013-03-04 17:08 ` [patch v9 22/23] testsuite, gdb.btrace: add btrace tests Markus Metzger
2013-03-04 19:47 ` Jan Kratochvil
2013-03-05 6:39 ` Metzger, Markus T
2013-03-05 20:14 ` Jan Kratochvil
2013-03-06 15:32 ` christian.himpel
2013-03-06 16:35 ` Jan Kratochvil
2013-03-04 17:08 ` [patch v9 06/23] btrace, doc: document remote serial protocol Markus Metzger
2013-03-04 18:08 ` Eli Zaretskii
2013-03-05 20:08 ` Jan Kratochvil
2013-03-06 9:06 ` Metzger, Markus T
2013-03-06 9:50 ` Jan Kratochvil
2013-03-06 10:01 ` Metzger, Markus T
2013-03-06 12:07 ` Jan Kratochvil
2013-03-06 12:13 ` Metzger, Markus T
2013-03-06 12:17 ` Jan Kratochvil
2013-03-04 17:08 ` [patch v9 11/23] target: add add_deprecated_target_alias Markus Metzger
2013-03-05 20:09 ` Jan Kratochvil
2013-03-04 17:09 ` [patch v9 18/23] record: add "record function-call-history" command Markus Metzger
2013-03-04 18:07 ` Eli Zaretskii
2013-03-05 20:12 ` Jan Kratochvil
2013-03-04 17:09 ` [patch v9 21/23] doc, record: document record changes Markus Metzger
2013-03-04 18:13 ` Eli Zaretskii
2013-03-05 20:13 ` Jan Kratochvil
2013-03-04 17:09 ` [patch v9 23/23] btrace, remote: drop qbtrace packet Markus Metzger
2013-03-04 18:15 ` Eli Zaretskii
2013-03-05 20:15 ` Jan Kratochvil
2013-03-04 17:09 ` [patch v9 17/23] record: add "record instruction-history" command Markus Metzger
2013-03-04 18:14 ` Eli Zaretskii
2013-03-05 20:11 ` Jan Kratochvil
2013-03-04 17:09 ` [patch v9 15/23] record-full.h: rename record_ into record_full_ Markus Metzger
2013-03-05 20:10 ` Jan Kratochvil
2013-03-04 17:09 ` [patch v9 13/23] record: make it build again Markus Metzger
2013-03-05 20:10 ` Jan Kratochvil
2013-03-04 17:09 ` [patch v9 14/23] record-full.c: rename record_ in record_full_ Markus Metzger
2013-03-05 20:10 ` Jan Kratochvil
2013-03-04 17:10 ` [patch v9 12/23] record: split record Markus Metzger
2013-03-05 20:09 ` Jan Kratochvil
2013-03-06 12:43 ` Crash of GDB with gdbserver btrace enabled [Re: [patch v9 00/23] branch tracing support for Atom] Jan Kratochvil
2013-03-06 14:40 ` Metzger, Markus T
2013-03-06 15:31 ` Metzger, Markus T
2013-03-06 17:06 ` Jan Kratochvil
2013-03-06 18:08 ` Metzger, Markus T
2013-03-07 9:06 ` Jan Kratochvil
2013-03-07 9:41 ` Metzger, Markus T
2013-03-07 10:00 ` Metzger, Markus T
2013-03-07 10:14 ` Jan Kratochvil
2013-03-07 10:33 ` Metzger, Markus T
2013-03-07 12:07 ` Jan Kratochvil
2013-03-07 12:33 ` Metzger, Markus T
2013-03-07 14:45 ` Jan Kratochvil
2013-03-07 15:22 ` Metzger, Markus T
2013-03-07 15:46 ` Jan Kratochvil
2013-03-07 15:12 ` Pedro Alves [this message]
2013-03-07 15:33 ` Metzger, Markus T
2013-03-07 15:39 ` Jan Kratochvil
2013-03-07 15:41 ` Pedro Alves
[not found] ` <20130318170643.GA15625@host2.jankratochvil.net>
[not found] ` <514758DA.2060905@redhat.com>
2013-03-20 15:52 ` [commit] [patch] Code cleanup: Remove parameter quitting [Re: Crash of GDB with gdbserver btrace enabled] Jan Kratochvil
[not found] ` <20130318192604.GA2786@host2.jankratochvil.net>
[not found] ` <51477828.30000@redhat.com>
2013-03-26 0:15 ` Jan Kratochvil
2013-04-03 18:05 ` Pedro Alves
2013-03-07 10:08 ` Crash of GDB with gdbserver btrace enabled [Re: [patch v9 00/23] branch tracing support for Atom] Jan Kratochvil
2013-03-06 15:41 ` Jan Kratochvil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5138AE4C.3060801@redhat.com \
--to=palves@redhat.com \
--cc=christian.himpel@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=markus.t.metzger@gmail.com \
--cc=markus.t.metzger@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox