From 2250bafaa042ba109db788e8a9a80b13bbbec0f8 Mon Sep 17 00:00:00 2001 From: bert hubert Date: Sat, 6 Dec 2014 20:34:01 +0100 Subject: [PATCH] Potential fix for #1907, we now try to trigger libgcc_s.so.1 to load before we chroot. I can't reproduce the bug on my local system, but this "should" help. Seriously. --- pdns/common_startup.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index f876171b7e..70b55988fb 100644 --- a/pdns/common_startup.cc +++ b/pdns/common_startup.cc @@ -350,6 +350,20 @@ void *qthread(void *number) return 0; } +static void* dummyThread(void *) +{ + void* ignore=0; + pthread_exit(ignore); +} + +static void triggerLoadOfLibraries() +{ + pthread_t tid; + pthread_create(&tid, 0, dummyThread, 0); + void* res; + pthread_join(tid, &res); +} + void mainthread() { Utility::srandom(time(0)); @@ -369,6 +383,7 @@ void mainthread() doSecPoll(true); // this must be BEFORE chroot if(!::arg()["chroot"].empty()) { + triggerLoadOfLibraries(); if(::arg().mustDo("master") || ::arg().mustDo("slave")) gethostbyname("a.root-servers.net"); // this forces all lookup libraries to be loaded Utility::dropGroupPrivs(newuid, newgid); -- 2.47.2