<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>