This is a case of exception context register getting clobbered in
shared library function call. GCC does not reload it when needed and
this ultimately leads to semi-random word in program memory decremented
by the __cp_pop_exception function. The bug is only triggered under very
specific circumstances involving inline functions and nested degenerate
exception handlers, that's why it existed unnoticed for quite some time.


On Wed, 13 Mar 2002 22:53:48 -0800
Terry Lambert <[EMAIL PROTECTED]> wrote:

> "M. Warner Losh" wrote:
> > In message: <[EMAIL PROTECTED]>
> >             Ed Hall <[EMAIL PROTECTED]> writes:
> > : Exception-handling is broken with -O in -stable, and has been for
> > years.: FreeBSD is one of the few systems that use setjmp/longjmp
> > stack unwinds: to implement exceptions, so when the GCC folks broke
> > that path, it was: never fixed.  There are supposedly patches
> > floating around that fix the: problem, but they either didn't work
> > as advertised or the ball got dropped.
> > 
> > Hmmmm, C++ exceptions work in -stable with -O and have for at least
> > a year.  At least they are working for us in our environment. 
> > What's busted?
> 
> Per thread exception stacks?  THat's where I'd look...
> 
> -- Terry
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-current" in the body of the message

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to