libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libunwind-devel] Translate signal to C++ exception


From: Kamil Rytarowski
Subject: [Libunwind-devel] Translate signal to C++ exception
Date: Sat, 9 Apr 2016 19:18:06 +0200
User-agent: Mozilla/5.0 (X11; NetBSD amd64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hello!

I'm in need of translating a signal handler to C++ exception.

I have got code like this:

#include <iostream>
#include <csignal>
using namespace std;

void catch_signal(int signalNumber)
{
    signal(SIGINT, SIG_DFL);
    throw(signalNumber);
}

int test_signal()
{
    signal(SIGINT, catch_signal);

    try
    {
        raise(SIGINT);
    }
    catch (int &z)
    {
        cerr << "Caught exception: " << z << endl;
    }
    return 0;
}

int main()
{
    try
    {
        test_signal();
    }
    catch (int &z)
    {
        cerr << "Caught unexpected exception: " << z << endl;
    }
    return 0;
}


I'm fully aware that this is unsafe and there are alternative designs
(sig_atomic_t).

My platform is NetBSD and I can use LLVM libunwind (as there is not
finished port of HP (nongnu) libunwind for this system).

I don't know ho to perform unwinding. When I'm using the backtrace(3)
interface, I can see that stack starts with the signal trampoline, I
need to go beyond it.

Thank you in advance,
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJXCTlMAAoJEEuzCOmwLnZsv6oP/33na0gzrqjrfHnnMU6IwnDg
mZKGXSaZK8+mLp9QkqS1UQgOe164WJNpQGCd2IGTa8lQ9rv2syLNANAbb/DZZlep
mLXxjW11mGdElBLYsVeBMJVAjFzgTMpVX9cxEqkk3DPc3FwY/1yTQmHQGupc2PUJ
M/yu0XSZiXpdhyapt6CcY2qXvORpJT+WFo3/XKY7tvhLfqG188pywR5ogWzH2Wkl
gowIh98aH3YP0lrCsvP+c0f5xaYsPYkrHPnJWfNQDN7pv3IlDQFyAHdNkbK7D1NL
K74VRMk7mL2ZJ/voW0CiGiJGv2Sc+WGrd9UzpLGMlZNEkwRVI47G2icTYGyTxPcF
H4r4Ei+iKsDKUEHgZDQJCpGHAaBS3IxfrHlwUscy66fxmrN1owLGcKi3JL7Wwhrw
Vm3meY7QK0Z8GgtGQFgkGuCC7uDpNUhqnOt/awsJdtn1ATYBC94+3aEKpHhYCr83
ZKGl6EzSnq7X2fmnyt38Ctudfz4SX5idCpTuI9SjdjROhuIzpEvG3yB0cdnAkLM5
FzktxwGZeJJnvh3BwHT1UbT1800P1OjiH4LONblcNM0B515Aib0xYtLQr5c63Id8
oJnJC0Lnp90p0bmPFWAxgjU6L36sEvStikHWNwi7wNfNDoMloZsv5LSttcQcM00G
UpuIGOjtVBGdoaSaq1+u
=m6+l
-----END PGP SIGNATURE-----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]