Merge pull request #8614 from Icinga/bugfix/runworker-exceptions

Improve handling of exceptions thrown by RunWorker
This commit is contained in:
Alexander Aleksandrovič Klimov 2021-02-08 16:22:35 +01:00 committed by GitHub
commit aa4f53009e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -526,6 +526,9 @@ static pid_t StartUnixWorker(const std::vector<std::string>& configs, bool close
}
_exit(RunWorker(configs, closeConsoleLog, stderrFile));
} catch (const std::exception& ex) {
Log(LogCritical, "cli") << "Exception in main process: " << DiagnosticInformation(ex);
_exit(EXIT_FAILURE);
} catch (...) {
_exit(EXIT_FAILURE);
}
@ -688,7 +691,14 @@ int DaemonCommand::Run(const po::variables_map& vm, const std::vector<std::strin
}
#ifdef _WIN32
return RunWorker(configs);
try {
return RunWorker(configs);
} catch (const std::exception& ex) {
Log(LogCritical, "cli") << "Exception in main process: " << DiagnosticInformation(ex);
return EXIT_FAILURE;
} catch (...) {
return EXIT_FAILURE;
}
#else /* _WIN32 */
l_UmbrellaPid = getpid();
Application::SetUmbrellaProcess(l_UmbrellaPid);