Add a trap

This commit is contained in:
Alexey Milovidov 2022-09-18 02:24:56 +02:00
parent 515972f459
commit 15e5fc96a1

View File

@ -14,6 +14,7 @@
#include <cstdlib>
#include <unistd.h>
#include <sys/mman.h>
#include <dlfcn.h>
namespace DB
@ -25,6 +26,7 @@ namespace ErrorCodes
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
extern const int BAD_ARGUMENTS;
extern const int CANNOT_ALLOCATE_MEMORY;
extern const int CANNOT_DLOPEN;
}
@ -136,7 +138,7 @@ public:
}
else if (mode == "access context")
{
(void)context.getCurrentQueryId();
(void)context->getCurrentQueryId();
}
else if (mode == "stack overflow")
{
@ -166,6 +168,12 @@ public:
maps.push_back(map);
}
}
else if (mode == "dlopen")
{
void * handle = dlopen("libc.so.6", RTLD_NOW);
if (!handle)
throw Exception(ErrorCodes::CANNOT_DLOPEN, "Cannot dlopen: ({})", dlerror()); // NOLINT(concurrency-mt-unsafe) // MT-Safe on Linux, see man dlerror
}
else
throw Exception("Unknown trap mode", ErrorCodes::BAD_ARGUMENTS);
}