Prevent hang due to HandleUnexpectedSignal reentry

Change-Id: I0fe6a9b642e8d866aba893906c36bca6f1a4334e
diff --git a/src/runtime_linux.cc b/src/runtime_linux.cc
index 430c70f..72989a6 100644
--- a/src/runtime_linux.cc
+++ b/src/runtime_linux.cc
@@ -227,7 +227,15 @@
   mcontext_t& context;
 };
 
-static void HandleUnexpectedSignal(int signal_number, siginfo_t* info, void* raw_context) {
+void HandleUnexpectedSignal(int signal_number, siginfo_t* info, void* raw_context) {
+  static bool handlingUnexpectedSignal = false;
+  if (handlingUnexpectedSignal) {
+    LogMessageData data(__FILE__, __LINE__, INTERNAL_FATAL, -1);
+    LogMessage::LogLine(data, "HandleUnexpectedSignal reentered\n");
+    _exit(1);
+  }
+  handlingUnexpectedSignal = true;
+
   gAborting = true;  // set before taking any locks
   MutexLock mu(Thread::Current(), *Locks::unexpected_signal_lock_);