[vmkit-commits] [vmkit] r180489 - Working on capturing some signals like SIGTERM and so on. This is important because some Java applications perform actions to properly exit.
Peter Senna Tschudin
peter.senna at gmail.com
Thu Apr 25 10:17:25 PDT 2013
Author: peter.senna
Date: Thu Apr 25 12:15:55 2013
New Revision: 180489
URL: http://llvm.org/viewvc/llvm-project?rev=180489&view=rev
Log:
Working on capturing some signals like SIGTERM and so on. This is important because some Java applications perform actions to properly exit.
(cherry picked from commit 91cd52356c1521373a09cda9ea65e3c637092f4f)
Modified:
vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp
Modified: vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp?rev=180489&r1=180488&r2=180489&view=diff
==============================================================================
--- vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp (original)
+++ vmkit/trunk/lib/vmkit/CommonThread/ctthread.cpp Thu Apr 25 12:15:55 2013
@@ -322,6 +322,7 @@ public:
StackThreadManager TheStackManager;
extern void sigsegvHandler(int, siginfo_t*, void*);
+extern void sigsTermHandler(int n, siginfo_t *info, void *context);
/// internalThreadStart - The initial function called by a thread. Sets some
/// thread specific data, registers the thread to the GC and calls the
@@ -347,6 +348,18 @@ void Thread::internalThreadStart(vmkit::
sa.sa_sigaction = sigsegvHandler;
sigaction(SIGSEGV, &sa, NULL);
sigaction(SIGBUS, &sa, NULL);
+ // to handle termination
+ st.ss_sp = (void*)th->GetAlternativeStackEnd();
+ st.ss_flags = 0;
+ st.ss_size = System::GetAlternativeStackSize();
+ sigaltstack(&st, NULL);
+ sigfillset(&mask);
+ sa.sa_flags = SA_SIGINFO | SA_ONSTACK;
+ sa.sa_mask = mask;
+ sa.sa_sigaction = sigsTermHandler;
+ sigaction(SIGHUP, &sa, NULL);
+ sigaction(SIGINT, &sa, NULL);
+ //sigaction(SIGTERM, &sa, NULL);
assert(th->MyVM && "VM not set in a thread");
th->MyVM->rendezvous.addThread(th);
More information about the vmkit-commits
mailing list