From: bert hubert Date: Sat, 6 Dec 2014 19:34:01 +0000 (+0100) Subject: Potential fix for #1907, we now try to trigger libgcc_s.so.1 to load before we chroot... X-Git-Tag: auth-3.4.2~15^2~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c57e1ddf9205766e9c43611df93f04b759d2ae3;p=thirdparty%2Fpdns.git 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. --- diff --git a/pdns/common_startup.cc b/pdns/common_startup.cc index 656efe615d..8605cdabb6 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);