gcc exception handling

Dave Korn dk@artimi.com
Thu Oct 14 12:34:00 GMT 2004


> -----Original Message-----
> From: cygwin-owner On Behalf Of Peter Xiaochuan Huang
> Sent: 13 October 2004 18:51

> >   Are you using the correct command line options to
> > compile with exceptions?
> 
>     I tried -mthreads that didn't fix it. What is the
> right compile flag?

  I believe -fexceptions is vital if you're using exceptions.  That should
be automatically the case for any C++ files you're compiling but if there
are plain old C files in your application as well they also need
-fexceptions when compiled.

> >   Do all functions have the correct throw specifiers
> > on their prototypes?
> 
>     None of my functions has any throw specifier,
> which means throw possibly anything. Is that good
> enough ?

  I believe it should be.  C++ exceptions are not my strong point, however.

> > 1)  Keep trying to come up with a simple testcase?
> > 2)  Switch gdb into assembly code view and debug the
> > problem by seeing what
> > actual values are in registers, stack and memory and
> > what actual machine
> > code instructions are getting executed to cause the
> > problem?
> 
>     I may have to try this if the compile flag you
> give to me doesn't fix the problem

  I fear you may have to.  Looking again at your original description of the
problem:

> > > It core dumps on the return statement in gdb. But
> > when
> > > I make a simplified test including only above
> > code,
> > > the core dump doesn't happen any more. My program
> > that
> > > gets core dumped links pthread and uses mutex.
> > > Actually the return statement should invoke stack
> > > unwinding that will do mutex locking and
> > unlocking.
> > > Though I don't know if that is related or not.

it seems likely to me that if you can't reduce it to a fairly simple
testcase, it could well indicate that there is some bug (perhaps a
threading-related race condition, or something else that might cause memory
corruption) in your code that is corrupting state and causing an error as
the stack is unwound.

    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/



More information about the Cygwin mailing list