<div dir="ltr">Yes, I'm investigating this.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 26, 2013 at 4:34 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">looks like this broke the bots:<br>
<br>
<a href="http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-debian-fast/builds/1929" target="_blank">http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-debian-fast/builds/1929</a><br>
<div class="HOEnZb"><div class="h5"><br>
On 26 April 2013 07:35, Sergey Matveev <<a href="mailto:earthdok@google.com">earthdok@google.com</a>> wrote:<br>
> Author: smatveev<br>
> Date: Fri Apr 26 06:35:05 2013<br>
> New Revision: 180599<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=180599&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=180599&view=rev</a><br>
> Log:<br>
> [sanitizer] Clear LD_PRELOAD when forking an external symbolizer.<br>
><br>
> Modified:<br>
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h<br>
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc<br>
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc<br>
><br>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=180599&r1=180598&r2=180599&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=180599&r1=180598&r2=180599&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)<br>
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Fri Apr 26 06:35:05 2013<br>
> @@ -131,6 +131,7 @@ void DumpProcessMap();<br>
>  bool FileExists(const char *filename);<br>
>  const char *GetEnv(const char *name);<br>
>  bool SetEnv(const char *name, const char *value);<br>
> +void UnsetEnv(const char *name);<br>
>  const char *GetPwd();<br>
>  u32 GetUid();<br>
>  void ReExec();<br>
><br>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc?rev=180599&r1=180598&r2=180599&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc?rev=180599&r1=180598&r2=180599&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc (original)<br>
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_linux.cc Fri Apr 26 06:35:05 2013<br>
> @@ -278,6 +278,20 @@ bool SetEnv(const char *name, const char<br>
>  }<br>
>  #endif<br>
><br>
> +void UnsetEnv(const char *name) {<br>
> +  uptr name_length = internal_strlen(name);<br>
> +  uptr last = 0;<br>
> +  while (environ[last]) last++;<br>
> +  for (uptr i = 0; environ[i]; i++)<br>
> +    if (internal_strlen(environ[i]) >= name_length + 1 &&<br>
> +        internal_strncmp(environ[i], name, name_length) == 0 &&<br>
> +        environ[i][name_length] == '=') {<br>
> +      last--;<br>
> +      environ[i] = environ[last];<br>
> +      environ[last] = 0;<br>
> +    }<br>
> +}<br>
> +<br>
>  #ifdef __GLIBC__<br>
><br>
>  extern "C" {<br>
><br>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc?rev=180599&r1=180598&r2=180599&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc?rev=180599&r1=180598&r2=180599&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc (original)<br>
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_linux.cc Fri Apr 26 06:35:05 2013<br>
> @@ -100,6 +100,11 @@ bool StartSymbolizerSubprocess(const cha<br>
>      internal_close(infd[1]);<br>
>      for (int fd = getdtablesize(); fd > 2; fd--)<br>
>        internal_close(fd);<br>
> +    // If the parent tool is used as a preloadable library, do not apply it to<br>
> +    // the symbolizer.<br>
> +    // FIXME: If LD_PRELOAD contains more than one object, we should keep those<br>
> +    // that have nothing to do with us.<br>
> +    UnsetEnv("LD_PRELOAD");<br>
>      execl(path_to_symbolizer, path_to_symbolizer, (char*)0);<br>
>      internal__exit(1);<br>
>    }<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div>