[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-----
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Libunwind-devel] Translate signal to C++ exception,
Kamil Rytarowski <=