diff --git a/lib/std/libc/os/posix.c3 b/lib/std/libc/os/posix.c3 index 749d2bfa8..0146c662e 100644 --- a/lib/std/libc/os/posix.c3 +++ b/lib/std/libc/os/posix.c3 @@ -11,6 +11,7 @@ const int RTLD_LAZY = 0x1; const int RTLD_NOW = 0x2; const int RTLD_LOCAL = 0x4; const int RTLD_GLOBAL = 0x8; +const int RTLD_NODELETE = 0x1000; def Pid_t = int; def Uid_t = uint; diff --git a/lib/std/os/posix/process.c3 b/lib/std/os/posix/process.c3 index b2dd4f9b8..054d295ef 100644 --- a/lib/std/os/posix/process.c3 +++ b/lib/std/os/posix/process.c3 @@ -61,7 +61,7 @@ def BacktraceFn = fn CInt(void** buffer, CInt size); fn CInt backtrace(void** buffer, CInt size) { if (size < 1) return 0; - void* handle = libc::dlopen("libc.so.6", libc::RTLD_LAZY); + void* handle = libc::dlopen("libc.so.6", libc::RTLD_LAZY|libc::RTLD_NODELETE); if (handle) { BacktraceFn backtrace_fn = libc::dlsym(handle, "backtrace");