[libvirt] [PATCH 1/2] tests: commandtest: handle tcmalloc hacking environment

Daniel P. Berrange berrange at redhat.com
Fri Nov 17 13:40:28 UTC 2017


On Fri, Nov 17, 2017 at 04:31:13PM +0300, Nikolay Shirokovskiy wrote:
> 
> 
> On 17.11.2017 16:24, Daniel P. Berrange wrote:
> > On Fri, Nov 17, 2017 at 04:17:37PM +0300, Nikolay Shirokovskiy wrote:
> >> If one of the libraries is compiled with tcmalloc then
> >> the latter will add GLIBCPP_FORCE_NEW and GLIBCXX_FORCE_NEW to
> >> environment at startup and thus break commandtest.
> > 
> > How are they getting those envs into our environment after we clean it
> > out ? We strongly aim to prevent any non-whitelisted env variable
> > leakage into children we spawn, so I would really like to kill these
> > env vars instead of changin the test.
> 
> They inserted at process startup I guess [1]. They are cleared out by commandtest
> but visible in commandhelper.

Hmm, so is comandhelper getting linked to tcmalloc by mistake then ?
If so, how easy is it to stop it being linked

> 
> [1] https://github.com/gperftools/gperftools/blob/6e3a702fb9c86eb450f22b326ecbceef4b0d6604/src/malloc_extension.cc#L85
> 
> > 
> >> ---
> >>  tests/commandhelper.c | 11 +++++++++--
> >>  1 file changed, 9 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/tests/commandhelper.c b/tests/commandhelper.c
> >> index 1da2834..0f6ce07 100644
> >> --- a/tests/commandhelper.c
> >> +++ b/tests/commandhelper.c
> >> @@ -94,8 +94,15 @@ int main(int argc, char **argv) {
> >>      for (i = 0; i < n; i++) {
> >>          /* Ignore the variables used to instruct the loader into
> >>           * behaving differently, as they could throw the tests off. */
> >> -        if (!STRPREFIX(newenv[i], "LD_"))
> >> -            fprintf(log, "ENV:%s\n", newenv[i]);
> >> +        if (STRPREFIX(newenv[i], "LD_"))
> >> +            continue;
> >> +
> >> +        /* Fix tests if tcmalloc is used in libraries */
> >> +        if (STRPREFIX(newenv[i], "GLIBCPP_FORCE_NEW=") ||
> >> +            STRPREFIX(newenv[i], "GLIBCXX_FORCE_NEW="))
> >> +            continue;
> >> +
> >> +        fprintf(log, "ENV:%s\n", newenv[i]);
> >>      }
> >>  
> >>      open_max = sysconf(_SC_OPEN_MAX);
> >> -- 
> >> 1.8.3.1
> >>
> >> --
> >> libvir-list mailing list
> >> libvir-list at redhat.com
> >> https://www.redhat.com/mailman/listinfo/libvir-list
> > 
> > Regards,
> > Daniel
> > 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list