Commit 623c9055 authored by Pavel Vainerman's avatar Pavel Vainerman

(UActivator): сделал вывод stack trace и для сигнала SIGABRT.

parent e318a9a8
...@@ -86,6 +86,8 @@ using namespace std; ...@@ -86,6 +86,8 @@ using namespace std;
Если не включён, то выводиться в cerr. Если не включён, то выводиться в cerr.
Сам обработчик только выводит trace и завершает работу, восстановив обработчик SIGSEGV по умолчанию, Сам обработчик только выводит trace и завершает работу, восстановив обработчик SIGSEGV по умолчанию,
без какой-либо специальной обработки завершения. без какой-либо специальной обработки завершения.
Помимо этого, вывод stack trace сделан и для сигнала SIGABRT
*/ */
// ------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------
static std::shared_ptr<UniSetActivator> g_act; static std::shared_ptr<UniSetActivator> g_act;
...@@ -233,18 +235,12 @@ static void activator_terminate( int signo ) ...@@ -233,18 +235,12 @@ static void activator_terminate( int signo )
ulogsys << "****** TERMINATE SIGNAL=" << signo << endl << flush; ulogsys << "****** TERMINATE SIGNAL=" << signo << endl << flush;
// прежде чем вызывать notify_one следует освободить mutex...(вроде как) g_term = true;
{
std::unique_lock<std::mutex> locker(g_termmutex);
if( g_term )
return;
g_term = true; if( signo == SIGABRT )
} printStackTrace();
ulogsys << "****** TERMINATE NOTIFY...(signo=" << signo << ")" << endl << flush; ulogsys << "****** TERMINATE NOTIFY...(signo=" << signo << ")" << endl << flush;
g_term = true;
g_signo = signo; g_signo = signo;
g_termevent.notify_one(); g_termevent.notify_one();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment