Re: Issue with Latest GDB on AIX with GCC-6.12

Pedro Alves <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 01/29/2017 01:11 AM, David Edelsohn wrote:

> Note that std::terminate() is called specifically because there was an
> unwind failure and no handler was found in eh_throw.cc in libsupc++
> (part of libstdc++).

Right, that's what makes it look like either an runtime unwinder,
or unwind info bug.

> Is this code trying to propagate an exception through a signal
> handler, in which case GCC MD_FALLBACK_FRAME_STATE_FOR needs to be
> tweaked to find more AIX kernel signal handler signatures.

Nope, it's just normal C++ frames all the way from the throw to
the "catch" that should catch the exception.

(GDB stopped throwing from signal handlers before we flipped
the C++ switch, with:
 [PATCH 00/30] Stop throwing exceptions from signal handlers
 https://sourceware.org/ml/gdb-patches/2016-03/msg00351.html
)

I'd suggest progressively hacking in "catches" to frames
closer to the throw in question helps identify the frame that
can't be unwound.  Like, sprinkling in a few:

try
  {
    ...
  }
catch (...)
  {
    printf ("%s:%d: got here\n", __FILE__, __LINE__)
    throw;
  }

Thanks,
Pedro Alves
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.