Risc6000 dbx

jim frost madd at world.std.com
Thu Aug 23 22:59:54 AEST 1990


anand at norman.UUCP (Anand Bemra) writes:
>Although I go through comp.unix.aix about 3-4 times a week, I have
>not come across folks complaining about the dbx on Risc6000. 

One failure we noticed immediately is that dbx cannot back up beyond a
signal hander.  Type in the following:

-- cut here --
#include <signal.h>

int handler()
{
  abort();
}

main()
{
  signal(SIGINT, handler);
  kill(0, SIGINT);
}
-- cut here --

When dbx gets the abort signal, it cannot back up on the stack beyond
handler().  A lot of applications use signal handlers to clean up
before leaving on a terminal error (eg SIGSEGV) -- the kind of error
that you want to track down -- so this is A Bad Thing.  I ran into it
in the first few minutes of porting a mid-sized application.

I expect that the reason why this is done is that it's difficult to
tell if you're in the middle of the function prologue or epilogue when
you get the signal, and if you are then some of the information in the
stack and/or traceback tables isn't right.  It would still be nice to
be able to get a full stack trace anyway -- even if the information
for the function which was interrupted is not guaranteed correct.

This problem exists under 9021F.  I haven't tried it yet with the 3001
update installed.

jim frost
saber software
jimf at saber.com



More information about the Comp.unix.aix mailing list