Update BaseDaemon.cpp

This commit is contained in:
alexey-milovidov 2019-02-02 20:07:20 +03:00 committed by GitHub
parent 5f0eec91a3
commit fa644e1778
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -610,7 +610,8 @@ BaseDaemon::~BaseDaemon()
}
enum class InstructionFail {
enum class InstructionFail
{
NONE = 0,
SSE3 = 1,
SSSE3 = 2,
@ -621,7 +622,7 @@ enum class InstructionFail {
AVX512 = 7
};
DB::String instruction_fail_to_string(InstructionFail fail)
static std::string instructionFailToString(InstructionFail fail)
{
switch(fail)
{
@ -648,7 +649,6 @@ DB::String instruction_fail_to_string(InstructionFail fail)
static sigjmp_buf jmpbuf;
static void sigIllCheckHandler(int sig, siginfo_t * info, void * context)
{
siglongjmp(jmpbuf, 1);
@ -705,29 +705,26 @@ void BaseDaemon::checkRequiredInstructions()
sa.sa_sigaction = sigIllCheckHandler;
sa.sa_flags = SA_SIGINFO;
auto signal = SIGILL;
if (sigemptyset(&sa.sa_mask)) {
std::cerr << "Can not set signal handler\n";
exit(1);
}
if (sigaddset(&sa.sa_mask, signal)) {
std::cerr << "Can not set signal handler\n";
exit(1);
}
if (sigaction(signal, &sa, &sa_old)) {
if (sigemptyset(&sa.sa_mask) != 0
|| sigaddset(&sa.sa_mask, signal) != 0
|| sigaction(signal, &sa, &sa_old) != 0)
{
std::cerr << "Can not set signal handler\n";
exit(1);
}
volatile InstructionFail fail = InstructionFail::NONE;
if (sigsetjmp(jmpbuf, 1)) {
std::cerr << "Instruction check fail. There is no " << instruction_fail_to_string(fail) << " instruction set\n";
if (sigsetjmp(jmpbuf, 1))
{
std::cerr << "Instruction check fail. There is no " << instructionFailToString(fail) << " instruction set\n";
exit(1);
}
::checkRequiredInstructions(fail);
if (sigaction(signal, &sa_old, nullptr)) {
if (sigaction(signal, &sa_old, nullptr))
{
std::cerr << "Can not set signal handler\n";
exit(1);
}