Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2006-08-31 11:23:33

Tanguy Fautre <tanguy.fautre_at_[hidden]> writes:

>>And please bring
>> your Boost.Python questions to the C++-sig
>> <>.
> After doing a minimal example reproducing this error, I think I found
> the problem.
> According to the C++ Programming Language (3rd ed), Section 14.7: "It is
> implementation-defined whether destructors are invoked when a program is
> terminated because of an uncaught exception.".


> That, I did not know. I thought destructor were always called.
> GCC 4.x and Visual C++ 2005 are indeed calling std::terminate without
> calling the destructors. Except... Except when debugging with VC++ 2005.
> When debugging, you have the choice to continue after a uncaught
> exception is thrown as if nothing happened. This effectively leads to a
> segfault as described as above.

I think changing the semantics of "throw x" from "unwind the stack and
maybe terminate" to "continue as though nothing has happened" seems
like it could break any program.

> So it's not a problem with my application nor Boost.Python. Just my
> misunderstanding of uncaught exceptions and of Visual C++.
> Sorry I bothered you with this false alert.

'S ok.

Dave Abrahams
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at