public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "Willgerodt, Felix" <felix.willgerodt@intel.com>
To: Tom Tromey <tom@tromey.com>,
	Felix Willgerodt via Gdb-patches <gdb-patches@sourceware.org>
Cc: "Metzger, Markus T" <markus.t.metzger@intel.com>,
	"simark@simark.ca" <simark@simark.ca>
Subject: RE: [PATCH v9 06/10] python: Add clear() to gdb.Record.
Date: Thu, 13 Jul 2023 12:34:51 +0000	[thread overview]
Message-ID: <MN2PR11MB4566C8A71E642BCED76D67AA8E37A@MN2PR11MB4566.namprd11.prod.outlook.com> (raw)
In-Reply-To: <87wmzdt3yc.fsf@tromey.com>

> -----Original Message-----
> From: Tom Tromey <tom@tromey.com>
> Sent: Donnerstag, 6. Juli 2023 18:12
> To: Felix Willgerodt via Gdb-patches <gdb-patches@sourceware.org>
> Cc: Metzger, Markus T <markus.t.metzger@intel.com>; simark@simark.ca;
> Willgerodt, Felix <felix.willgerodt@intel.com>
> Subject: Re: [PATCH v9 06/10] python: Add clear() to gdb.Record.
> 
> >>>>> Felix Willgerodt via Gdb-patches <gdb-patches@sourceware.org> writes:
> 
> > This function allows to clear the trace data from python, forcing to
> > re-decode the trace for successive commands.
> > This will be used in future ptwrite patches, to trigger re-decoding when
> > the ptwrite filter changes.
> 
> > +PyObject *
> > +recpy_bt_clear (PyObject *self, PyObject *args)
> > +{
> > +  const recpy_record_object * const record = (recpy_record_object *) self;
> > +  thread_info *const tinfo = record->thread;
> 
> Normally in the Python layer, some care must be taken to ensure that
> something sensible happens when a Python object outlives some underlying
> gdb object.  That is why some types have an 'is_valid' method and why
> there are the various *_REQUIRE_VALID macros.
> 
> It isn't a problem with this patch per se but it seems to me that this
> code does not handle this situation properly.
> 
> Tom

Thanks for the review, I am not sure I understand your point completely.

In this patch, standalone, I don't see any such problem, so you are probably
referring to the whole series.
Note that there is already "maintenance btrace clear" in CLI. So if anything
bad could happen, it would already be exposed by that command as well.
But yes, that is a maintenance command so maybe not 100% comparable.

Why we need this patch in this series, is that once a function call history
or instruction call history is decoded, it will not be re-decoded until you
continue to the next BP and re-issue the command.
And that makes some sense, as the decoding can be costly.

Now, if a user registers a new ptwrite filter, and we don't re-decode the
trace, he will be confused. As he still sees the old trace and not the
output of his newly registered filter function. We could state that that
is a limitation, or check for this and warn the user. But I decided to instead
clear the trace data to force re-decoding the function and instruction
history. 
I tested this a bit, and you can too with upstream using the maintenance
command. I didn't see any problems, any subsequent commands would
use the new trace data. And any gdb python objects would also fetch that
new trace data or print an error if the trace data is empty.

Felix
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

  reply	other threads:[~2023-07-13 12:34 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-04 12:35 [PATCH v9 00/10] Extensions for PTWRITE Felix Willgerodt
2023-07-04 12:35 ` [PATCH v9 01/10] btrace: Introduce auxiliary instructions Felix Willgerodt
2023-07-04 12:44   ` Eli Zaretskii
2023-07-04 12:35 ` [PATCH v9 02/10] btrace: Enable auxiliary instructions in record instruction-history Felix Willgerodt
2023-07-04 12:45   ` Eli Zaretskii
2023-07-04 12:35 ` [PATCH v9 03/10] btrace: Enable auxiliary instructions in record function-call-history Felix Willgerodt
2023-07-04 12:47   ` Eli Zaretskii
2023-07-04 12:35 ` [PATCH v9 04/10] btrace: Handle stepping and goto for auxiliary instructions Felix Willgerodt
2023-07-04 12:35 ` [PATCH v9 05/10] python: Introduce gdb.RecordAuxiliary class Felix Willgerodt
2023-07-04 12:52   ` Eli Zaretskii
2023-07-05 10:04     ` Willgerodt, Felix
2023-07-05 11:37       ` Eli Zaretskii
2023-07-04 12:35 ` [PATCH v9 06/10] python: Add clear() to gdb.Record Felix Willgerodt
2023-07-04 12:46   ` Eli Zaretskii
2023-07-05 10:03     ` Willgerodt, Felix
2023-07-05 11:35       ` Eli Zaretskii
2023-07-06 16:11   ` Tom Tromey
2023-07-13 12:34     ` Willgerodt, Felix [this message]
2023-07-13 16:45       ` Tom Tromey
2023-07-14 11:07         ` Willgerodt, Felix
2023-07-04 12:35 ` [PATCH v9 07/10] btrace, gdbserver: Add ptwrite to btrace_config_pt Felix Willgerodt
2023-07-04 12:49   ` Eli Zaretskii
2023-07-05 10:04     ` Willgerodt, Felix
2023-07-04 12:35 ` [PATCH v9 08/10] btrace, linux: Enable ptwrite packets Felix Willgerodt
2023-07-04 12:35 ` [PATCH v9 09/10] btrace, python: Enable ptwrite filter registration Felix Willgerodt
2023-07-06 16:31   ` Tom Tromey
2023-07-13 12:34     ` Willgerodt, Felix
2023-07-04 12:36 ` [PATCH v9 10/10] btrace: Extend ptwrite event decoding Felix Willgerodt
2023-07-04 12:56   ` Eli Zaretskii
2023-07-05 10:04     ` Willgerodt, Felix
2023-07-06 16:46   ` Tom Tromey
2023-07-13 12:34     ` Willgerodt, Felix
2023-07-06 16:37 ` [PATCH v9 00/10] Extensions for PTWRITE Tom Tromey

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=MN2PR11MB4566C8A71E642BCED76D67AA8E37A@MN2PR11MB4566.namprd11.prod.outlook.com \
    --to=felix.willgerodt@intel.com \
    --cc=gdb-patches@sourceware.org \
    --cc=markus.t.metzger@intel.com \
    --cc=simark@simark.ca \
    --cc=tom@tromey.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).