From: Vladimir Prus <vladimir@codesourcery.com>
To: Nick Roberts <nickrob@snap.net.nz>
Cc: gdb@sources.redhat.com
Subject: Re: Thread bound variable objects [was: Re: MI non-stop mode spec]
Date: Mon, 24 Mar 2008 14:38:00 -0000 [thread overview]
Message-ID: <200803241017.57891.vladimir@codesourcery.com> (raw)
In-Reply-To: <18407.20692.28713.106315@kahikatea.snap.net.nz>
On Monday 24 March 2008 09:57:24 Nick Roberts wrote:
> > > OK, it should be:
> > >
> > > + if (old_cleanups != NULL)
> > > + do_cleanups (old_cleanups);
> >
> > I think that's also wrong. In the event that no cleanups were installed
> > before calling this function, this code will fail to run the
> > cleanups installed by this function. In the event that a cleanup
> > should be really installed conditionally, the right code is:
> >
> > struct cleanups *back_to = make_cleanup (null_cleanup, NULL);
> >
> > if (...)
> > make_cleanup ();
> >
> > do_cleanups (back_to);
>
> I don't really see that: if nothing is added to cleanup_chain then no cleanups
> are done.
Suppose that no cleanups were installed before this function is called. Then, the
first call to make_cleanup will return NULL, which will be stored in 'old_cleanups'.
Then, at the end of the function you will execute:
if (old_cleanups != NULL)
do_cleanups (old_cleanups);
Here, old_cleanups is NULL, so cleanups added in the function are not run.
> > > I see now from the ChangeLog that you've committed your own change without
> > > posting to the list first or explaining what it does.
> >
> > Sorry, no:
> > 1. I've checked in two changes, not one.
> > 2. Both are posted to gdb-patches.
>
> OK, my mistake. I saw the first one.
>
> > 3. Both are general cleanups, and don't implement anything that your patch
> > tries to implement.
>
> It's just that the second one includes changes in and overlaps with my patch so
> I thought it was part of that thread. I'm not sure where that leaves things
> now.
I've started looking at your patch, and saw various cleanups that can
be done first, which I've done. I'll now get back to your patch proper, and hopefully
will get it in today.
> > > My patch does two things:
> > >
> > > 1) It stops a variable object from being considered automatically out of
> > > scope when the selected thread changes.
> > > 2) It associates a thread-id field with the variable object so that the
> > > front end can organise the display of watch expressions accordingly.
> > >
> > > AFAICS your patch does neither of these. Could you please say what it
> > > does do?
> >
> > Please see my gdb-patches posts.
>
> With regard to the second patch, why you are using
> make_cleanup_restore_current_thread when you aren't switching the thread in the
> first place?
Because make_cleanup_restore_current_thread is handy pre-existing solution
that will restore both thread and frame, and won't cause any harm if the
thread is not actually changed. I probably could have introduced another
cleanup to restore just frame, but that will be less safe, and only
insignificantly faster.
- Volodya
next prev parent reply other threads:[~2008-03-24 7:18 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-19 2:49 MI non-stop mode spec Vladimir Prus
2008-03-19 6:26 ` Nick Roberts
2008-03-19 9:14 ` Vladimir Prus
2008-03-19 10:02 ` Nick Roberts
2008-03-19 11:10 ` Vladimir Prus
2008-03-19 12:30 ` Nick Roberts
2008-03-19 13:43 ` Vladimir Prus
2008-03-19 20:44 ` Michael Snyder
2008-03-19 11:20 ` Bob Rossi
2008-03-19 11:16 ` Bob Rossi
2008-03-19 12:01 ` Vladimir Prus
2008-03-19 13:50 ` Bob Rossi
2008-03-19 14:07 ` Vladimir Prus
2008-03-19 14:33 ` Bob Rossi
2008-03-19 16:09 ` Vladimir Prus
2008-03-20 18:22 ` Marc Khouzam
2008-03-20 20:02 ` Vladimir Prus
2008-03-21 9:11 ` Nick Roberts
2008-03-21 9:48 ` Vladimir Prus
2008-03-21 18:13 ` Nick Roberts
2008-03-22 0:33 ` Vladimir Prus
2008-03-23 4:41 ` Nick Roberts
2008-03-23 5:18 ` Vladimir Prus
2008-03-23 9:25 ` Nick Roberts
2008-03-24 5:44 ` Vladimir Prus
2008-03-24 7:05 ` Thread bound variable objects [was: Re: MI non-stop mode spec] Nick Roberts
2008-03-24 7:18 ` Vladimir Prus
2008-03-24 11:04 ` Nick Roberts
2008-03-24 14:38 ` Vladimir Prus [this message]
2008-03-25 6:28 ` Thread bound variable objects Nick Roberts
2008-03-25 11:34 ` Daniel Jacobowitz
2008-03-21 11:52 ` MI non-stop mode spec Vladimir Prus
2008-03-24 23:14 ` Daniel Jacobowitz
2008-03-25 17:46 ` Vladimir Prus
2008-03-22 17:33 ` Pawel Piech
2008-03-24 4:03 ` Nick Roberts
2008-03-24 17:22 ` Pawel Piech
2008-03-24 20:23 ` Vladimir Prus
2008-03-25 2:14 ` Nick Roberts
2008-03-24 18:38 ` Vladimir Prus
2008-03-24 21:25 ` Pawel Piech
2008-03-24 21:46 ` Vladimir Prus
2008-03-24 22:28 ` Pawel Piech
2008-03-25 12:30 ` Vladimir Prus
2008-03-25 18:30 ` Pawel Piech
2008-03-27 14:13 ` Vladimir Prus
2008-03-27 19:39 ` Pawel Piech
2008-03-25 21:28 ` Nick Roberts
2008-03-26 13:03 ` Pawel Piech
2008-03-25 1:00 ` Daniel Jacobowitz
2008-03-25 18:18 ` Pawel Piech
2008-03-30 21:36 ` Pawel Piech
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=200803241017.57891.vladimir@codesourcery.com \
--to=vladimir@codesourcery.com \
--cc=gdb@sources.redhat.com \
--cc=nickrob@snap.net.nz \
/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