Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!uunet!samsung!usc!ucsd!ucbvax!bloom-beacon!world!madd From: madd@world.std.com (jim frost) Newsgroups: comp.unix.aix Subject: Re: Risc6000 dbx Keywords: dbx ibm aix unix Message-ID: <1990Aug23.125954.10990@world.std.com> Date: 23 Aug 90 12:59:54 GMT References: <489@norman.UUCP> Organization: Saber Software Lines: 41 anand@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 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@saber.com