Skip to content
Snippets Groups Projects
Commit 451531e9 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Fix pause on error in parallel

deactivate "auto pause" mode (should try to fix it since it would be quite handy)
parent 260fb78d
No related branches found
No related tags found
1 merge request!11Feature/mpi
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
#include <pastis_config.hpp> #include <pastis_config.hpp>
#include <rang.hpp> #include <rang.hpp>
#include <Messenger.hpp>
std::string SignalManager::s_pause_on_error = "auto"; std::string SignalManager::s_pause_on_error = "auto";
void SignalManager::setPauseForDebug(const std::string& pause_on_error) void SignalManager::setPauseForDebug(const std::string& pause_on_error)
{ {
...@@ -34,24 +36,23 @@ std::string SignalManager::signalName(const int& signal) ...@@ -34,24 +36,23 @@ std::string SignalManager::signalName(const int& signal)
void SignalManager::pauseForDebug(const int& signal) void SignalManager::pauseForDebug(const int& signal)
{ {
if (std::string(PASTIS_BUILD_TYPE) != "Release") { if (std::string(PASTIS_BUILD_TYPE) != "Release") {
if ((ConsoleManager::isTerminal(pout()) and #warning should try to detect if outputs to a terminal (buggy with mpi)
(s_pause_on_error == "auto")) or if (// (ConsoleManager::isTerminal(pout()) and (s_pause_on_error == "auto")) or
(s_pause_on_error == "yes")) { (s_pause_on_error == "yes")) {
pout() << "\n======================================\n"; std::cerr << "\n======================================\n"
pout() << rang::style::reset << rang::style::reset
<< rang::fg::reset << rang::fg::reset
<< rang::style::bold; << rang::style::bold
pout() << "to attach gdb to this process run\n"; << "to attach gdb to this process run\n"
pout() << "\tgdb -pid " << "\tgdb -pid "
<< rang::fg::red << rang::fg::red
<< getpid() << getpid()
<< rang::fg::reset << rang::fg::reset
<< '\n'; << '\n'
pout() << "else press Control-C to exit\n"; << "else press Control-C to exit\n"
pout() << rang::style::reset; << rang::style::reset
pout() << "======================================\n"; << "======================================\n"
pout() << std::flush; << std::flush;
pause(); pause();
} }
} }
...@@ -66,6 +67,9 @@ void SignalManager::handler(int signal) ...@@ -66,6 +67,9 @@ void SignalManager::handler(int signal)
std::signal(SIGINT, SIG_DFL); std::signal(SIGINT, SIG_DFL);
std::signal(SIGABRT, SIG_DFL); std::signal(SIGABRT, SIG_DFL);
BacktraceManager bm;
std::cerr << bm << '\n';
std::exception_ptr eptr = std::current_exception(); std::exception_ptr eptr = std::current_exception();
try { try {
if (eptr) { if (eptr) {
...@@ -73,17 +77,17 @@ void SignalManager::handler(int signal) ...@@ -73,17 +77,17 @@ void SignalManager::handler(int signal)
} }
} }
catch(const AssertError& assert_error) { catch(const AssertError& assert_error) {
perr() << assert_error << '\n'; std::cerr << assert_error << '\n';
} }
catch(...) { catch(...) {
perr() << "Unknown exception!\n"; std::cerr << "Unknown exception!\n";
} }
perr() << "\n *** " std::cerr << "\n *** "
<< rang::style::reset << rang::style::reset
<< rang::fg::reset << rang::fg::reset
<< rang::style::bold; << rang::style::bold
perr() << "Signal " << "Signal "
<< rang::fgB::red << rang::fgB::red
<< signalName(signal) << signalName(signal)
<< rang::fg::reset << rang::fg::reset
...@@ -91,9 +95,6 @@ void SignalManager::handler(int signal) ...@@ -91,9 +95,6 @@ void SignalManager::handler(int signal)
<< rang::style::reset << rang::style::reset
<< " ***\n"; << " ***\n";
BacktraceManager bm;
perr() << bm << '\n';
SignalManager::pauseForDebug(signal); SignalManager::pauseForDebug(signal);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment