handle SIGSEGV in Linux?
- by user303967
Hi all,
I need handle the SIGSEGV in my Linux app. The reason is some clean up(3-partry lib) must be done before generate core-dump. What is more, the clean up must be performed in the context of calling thread, cannot do in signal handler.
So I plan in signal handler to pass the control to the calling thread, after the clean up finished, then use raise(SIGSEGV) to generate the core-dump.
The real problem seems the signal_handler cannot pass the control to calling thread, no matter I use post_sem or some others.
Any idea to handle this case? Possbile to hijack the SIGSEGV, then in SIGSEGV hander return to another thread to perform some clean up?
signal(SIGSEGV, signal_handler);
signal_handler()
{
...
post_sem();
...
}
calling thread()
{
wait_sem();
clean_up();
...
}