Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com From: "Dave Korn" To: "'Cygwin AT Cygwin. Com'" Subject: RE: Program exited with code 0303000 Date: Tue, 28 Sep 2004 13:37:07 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit In-Reply-To: <004301c4a555$bba08940$eb88510a@internal.specialist.co.uk> Message-ID: X-OriginalArrivalTime: 28 Sep 2004 12:37:07.0236 (UTC) FILETIME=[DDA25E40:01C4A557] > -----Original Message----- > From: cygwin-owner On Behalf Of Dan Osborne > Sent: 28 September 2004 13:22 > I was trying to step through the code in gdb and pin this > down so setting > breaks on abort and exit sounds useful. However, both b abort > and b exit > give me ... > > (gdb) b abort > Breakpoint 1 at 0x401552: file otlv4.h, line 3608. > (gdb) b exit > Note: breakpoint 1 also set at pc 0x401552. > Breakpoint 2 at 0x401552: file otlv4.h, line 3608. > > But line 3608 of otlv4.h looks like nothing to do with abort or exit > > add_var(i,var,in_out,apl_tab_size); Um. Bizarre. You did build with -g and -O0, didn't you? Is this an actual function call here, or does add_var turn out to be some kind of macro or something that otherwise gets inlined? > However, further digging reveals that my program gets to the > throw command here ... > > catch ( RProgReturnException e ) > { > throw; > } > > and if I step on throw the debugger thinks I'm at ... gues > which line?! yes, line 3608 of otlv4.h ... > > (gdb) s > 0x1003b115 in __cxa_rethrow () at otlv4.h:3608 > 3608 add_var(i,var,in_out,apl_tab_size); You didn't say what function that catch instruction is actually in: is it in the function that calls add_var, or is it in add_var and add_var has been inlined at this point? In any case, it certainly seems to be in the right place, considering you are indeed re-throwing an exception. > and if I step again I get ... > > Program exited with code 0303000. Hmm. Have you properly used 'throws XXX' declarations on all the function prototypes that need them? > So I'm wondering firstly why gdb seems to have a mismatch > between address > and source line number and why that throw didn't get caught > in my catch in > main. You haven't shown me your main catch clause, but I'll assume that it covers all exception types (or at any rate, that it includes RProgReturnException). As I suggest above, giving bad information to the compiler (through missing or bogus throws decls) can cause it to generate bad unwind info: and we can pretty much presume that the unwind info has to be bad in some way and that's why it's missing your outer catch when it unwinds. cheers, DaveK -- Can't think of a witty .sigline today.... -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/