handle SIGSEGV in Linux?
Posted
by user303967
on Stack Overflow
See other posts from Stack Overflow
or by user303967
Published on 2010-06-10T06:48:04Z
Indexed on
2010/06/10
6:52 UTC
Read the original article
Hit count: 413
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(); ... }
© Stack Overflow or respective owner