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: rec-3.7.0-rc1~145 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2250bafaa042ba109db788e8a9a80b13bbbec0f8;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 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);