mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Update BaseDaemon.cpp
This commit is contained in:
parent
5f0eec91a3
commit
fa644e1778
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user