Package: g++-4.2
Version: 4.2.1-6
Severity: normal
g++ seems to ignore exception handlers in unpredictable ways. I've
attached a minimal program that illustrates what's been happening to me.
It aborts with an uncaught exception ("terminate called after throwing
an instance of 'exception'"). But if you comment out either the line
instantiating a class that crashes in its destructor, or the line that
explicitly throws an exception, the exception is caught as expected.
Daniel
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.22-2-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages g++-4.2 depends on:
ii gcc-4.2 4.2.1-6 The GNU C compiler
ii gcc-4.2-base 4.2.1-6 The GNU Compiler Collection (base
ii libc6 2.6.1-5 GNU C Library: Shared libraries
ii libstdc++6-4.2-dev 4.2.1-6 The GNU Standard C++ Library v3 (d
g++-4.2 recommends no packages.
-- no debconf information
#include <iostream>
class exception
{
};
class crash_in_destructor
{
public:
~crash_in_destructor()
{
exception tmp;
throw tmp;
}
};
int main(int argc, char **argv)
{
try
{
crash_in_destructor tmp;
exception tmp2;
throw tmp2;
}
catch(exception)
{
std::cout << "PASS" << std::endl;
return 0;
}
std::cout << "FAIL" << std::endl;
return -1;
}