Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@codesourcery.com>
To: Tom Tromey <tromey@redhat.com>
Cc: gdb-patches@sourceware.org,  Daniel Jacobowitz <drow@false.org>,
	 Joel Brobecker <brobecker@adacore.com>
Subject: Re: RFC: next/finish/etc -vs- exceptions
Date: Wed, 10 Jun 2009 18:49:00 -0000	[thread overview]
Message-ID: <200906101950.36575.pedro@codesourcery.com> (raw)
In-Reply-To: <m3tz2oeyd8.fsf@fleche.redhat.com>

On Wednesday 10 June 2009 19:29:23, Tom Tromey wrote:
> The intent is to compare the "next"ing frame with the target frame of
> the exception.  Exceptions throw up to or past the nexting frame
> should be caught be gdb.

Right, this is the bit where comparing SP or FP pointers directly
bites back (other than it is not arch portable to address SP or FP
directly).  The simplest replacement is to check if the "next"ing frame
is still in the frame chain (with frame_find_by_id).  If it is, then you
know that the target frame is inner to the "next"ing frame.  If something
goes wrong with gdb's unwinding, you'll get a false positive and just stop
the inferior in an inner frame (thus, the back case isn't runaway
process, but spurious stop).

> I don't see how this works for longjmp.  From the code it looks like
> any longjmp is caught... is that the case?

Yes, that's the case.

> I suppose the failing case for exception unwinding is if the inferior
> stops in a signal handler on a separate stack, then the user "next"s
> over a throw in that handler.  Does that sound correct?

Yes.  Or, if you "next" in base code, and a signal (set to "pass nostop")
is caught in the meantime, the inferiors switches to an altstack, and then
the signal handler in the inferior throws.

-- 
Pedro Alves


  reply	other threads:[~2009-06-10 18:49 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-29 22:32 Tom Tromey
2009-05-30 21:08 ` Doug Evans
2009-05-30 23:18   ` Tom Tromey
2009-06-10 16:13 ` Joel Brobecker
2009-06-10 16:50   ` Tom Tromey
2009-06-10 17:05     ` Pedro Alves
2009-06-10 17:13       ` Daniel Jacobowitz
2009-06-10 17:47         ` Pedro Alves
2009-06-10 18:32           ` Tom Tromey
2009-06-10 18:49             ` Pedro Alves [this message]
2009-06-12 20:49           ` Tom Tromey
2009-06-12 21:51             ` Pedro Alves
2009-06-12 22:07               ` Pedro Alves
2010-11-25  4:54         ` Jan Kratochvil
2009-06-11 14:45     ` Joel Brobecker
2009-06-11 15:47       ` Tom Tromey
2009-07-24 17:38 ` Tom Tromey
2009-07-24 18:54   ` Pedro Alves
2009-07-24 19:18     ` Tom Tromey
2009-09-09 18:56     ` Tom Tromey
2010-10-07  1:37 Tom Tromey
2010-11-24 17:53 ` Joel Brobecker
2010-11-24 18:24   ` Tom Tromey
2010-11-25  7:59 ` Jan Kratochvil
2010-11-27 17:25   ` Doug Evans
2010-11-28  8:29     ` Joel Brobecker
2010-11-30 16:43   ` Tom Tromey
2010-11-30 17:02     ` Jan Kratochvil
2010-11-30 17:15       ` Phil Muldoon
2010-11-30 20:15     ` Tom Tromey
2010-12-01 13:42       ` Jan Kratochvil
2010-12-01 21:40     ` Tom Tromey
2010-11-30 18:23   ` Tom Tromey
2010-11-30 18:55     ` Tom Tromey
2010-12-02 15:32 ` Tom Tromey
2010-12-09 16:37   ` Tom Tromey
2010-12-10  4:52     ` Jan Kratochvil
2010-12-10 20:07       ` Tom Tromey
2010-12-11  5:27         ` Jan Kratochvil
2010-12-15 21:18           ` 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=200906101950.36575.pedro@codesourcery.com \
    --to=pedro@codesourcery.com \
    --cc=brobecker@adacore.com \
    --cc=drow@false.org \
    --cc=gdb-patches@sourceware.org \
    --cc=tromey@redhat.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