root/tools/regression/pthread/unwind/Test.cpp

static int destructed;
static int destructed2;

class Test {
public:
        Test() { printf("Test::Test()\n"); }
        ~Test() { printf("Test::~Test()\n"); destructed = 1; }
};

void
cleanup_handler(void *arg __unused)
{
        destructed2 = 1;
        printf("%s()\n", __func__);
}

void
check_destruct(void)
{
        if (!destructed)
                printf("Bug, object destructor is not called\n");
        else
                printf("OK\n");
}

void
check_destruct2(void)
{
        if (!destructed)
                printf("Bug, object destructor is not called\n");
        else if (!destructed2)
                printf("Bug, cleanup handler is not called\n");
        else
                printf("OK\n");
}