<div dir="ltr">Looks like a recently introduced bug. I see the same error on our Mac buildbot.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, May 14, 2014 at 4:22 AM, Evgeniy Stepanov <span dir="ltr"><<a href="mailto:eugeni.stepanov@gmail.com" target="_blank">eugeni.stepanov@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">And cmake logs contain the same errors as on the stage3 of the bootstrap build:<br>
<a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/3387" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/3387</a><br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Wed, May 14, 2014 at 3:10 PM, Kostya Serebryany <<a href="mailto:kcc@google.com">kcc@google.com</a>> wrote:<br>
> If I type "ninja" I get this:<br>
><br>
> Make Error at<br>
> /usr/local/google/kcc/llvm_cmake/projects/compiler-rt/lib/tsan/libcxx_tsan/src/libcxx_tsan-stamp/libcxx_tsan-build.cmake:17<br>
> (message):<br>
>   Command failed: 1<br>
><br>
>    '/home/kcc/cmake/bin/cmake' '--build'<br>
> '/usr/local/google/kcc/llvm_cmake/projects/compiler-rt/lib/tsan/libcxx_tsan/src/libcxx_tsan-build'<br>
> '--config' '.'<br>
><br>
><br>
><br>
> On Wed, May 14, 2014 at 2:30 AM, Alexey Samsonov <<a href="mailto:samsonov@google.com">samsonov@google.com</a>><br>
> wrote:<br>
>><br>
>> Author: samsonov<br>
>> Date: Tue May 13 17:30:16 2014<br>
>> New Revision: 208737<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=208737&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=208737&view=rev</a><br>
>> Log:<br>
>> [TSan] Build TSan-instrumented version of libcxx and use it in lit tests.<br>
>><br>
>> TSan can produce false positives in code that uses C++11 threading,<br>
>> as it doesn't see synchronization inside standard library. See<br>
>> <a href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-February/035408.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-February/035408.html</a><br>
>> for an example of such case.<br>
>><br>
>> We may build custom TSan-instrumented version libcxx to fight with that.<br>
>> This change adds build rules for libcxx_tsan and integrates it into<br>
>> testing infrastructure.<br>
>><br>
>> Added:<br>
>>     compiler-rt/trunk/test/tsan/libcxx/<br>
>>     compiler-rt/trunk/test/tsan/libcxx/lit.local.cfg<br>
>>     compiler-rt/trunk/test/tsan/libcxx/std_shared_ptr.cc<br>
>> Modified:<br>
>>     compiler-rt/trunk/lib/tsan/CMakeLists.txt<br>
>>     compiler-rt/trunk/test/<a href="http://lit.common.configured.in" target="_blank">lit.common.configured.in</a><br>
>>     compiler-rt/trunk/test/tsan/CMakeLists.txt<br>
>>     compiler-rt/trunk/test/tsan/lit.cfg<br>
>>     compiler-rt/trunk/test/tsan/<a href="http://lit.site.cfg.in" target="_blank">lit.site.cfg.in</a><br>
>><br>
>> Modified: compiler-rt/trunk/lib/tsan/CMakeLists.txt<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/CMakeLists.txt?rev=208737&r1=208736&r2=208737&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/CMakeLists.txt?rev=208737&r1=208736&r2=208737&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/tsan/CMakeLists.txt (original)<br>
>> +++ compiler-rt/trunk/lib/tsan/CMakeLists.txt Tue May 13 17:30:16 2014<br>
>> @@ -75,6 +75,7 @@ set(TSAN_HEADERS<br>
>>    rtl/tsan_update_shadow_word_inl.h<br>
>>    rtl/tsan_vector.h)<br>
>><br>
>> +set(TSAN_RUNTIME_LIBRARIES)<br>
>>  add_custom_target(tsan)<br>
>>  # TSan is currently supported on 64-bit Linux only.<br>
>>  if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE)<br>
>> @@ -90,6 +91,7 @@ if(CAN_TARGET_x86_64 AND UNIX AND NOT AP<br>
>>              $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}><br>
>>      CFLAGS ${TSAN_RTL_CFLAGS}<br>
>>      DEFS ${TSAN_COMMON_DEFINITIONS})<br>
>> +  list(APPEND TSAN_RUNTIME_LIBRARIES clang_rt.tsan-${arch})<br>
>>    add_sanitizer_rt_symbols(clang_rt.tsan-${arch} rtl/tsan.syms.extra)<br>
>>    add_dependencies(tsan clang_rt.tsan-${arch}<br>
>>      clang_rt.tsan-${arch}-symbols)<br>
>> @@ -97,6 +99,14 @@ endif()<br>
>><br>
>>  add_dependencies(compiler-rt tsan)<br>
>><br>
>> +# Build libcxx instrumented with TSan.<br>
>> +if(COMPILER_RT_HAS_LIBCXX_SOURCES)<br>
>> +  set(LIBCXX_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libcxx_tsan)<br>
>> +  add_custom_libcxx(libcxx_tsan ${LIBCXX_PREFIX}<br>
>> +    DEPS ${TSAN_RUNTIME_LIBRARIES}<br>
>> +    CFLAGS -fsanitize=thread)<br>
>> +endif()<br>
>> +<br>
>>  if(COMPILER_RT_INCLUDE_TESTS)<br>
>>    add_subdirectory(tests)<br>
>>  endif()<br>
>><br>
>> Modified: compiler-rt/trunk/test/<a href="http://lit.common.configured.in" target="_blank">lit.common.configured.in</a><br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lit.common.configured.in?rev=208737&r1=208736&r2=208737&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/lit.common.configured.in?rev=208737&r1=208736&r2=208737&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/<a href="http://lit.common.configured.in" target="_blank">lit.common.configured.in</a> (original)<br>
>> +++ compiler-rt/trunk/test/<a href="http://lit.common.configured.in" target="_blank">lit.common.configured.in</a> Tue May 13 17:30:16<br>
>> 2014<br>
>> @@ -16,6 +16,7 @@ set_default("llvm_build_mode", "@LLVM_BU<br>
>>  set_default("llvm_src_root", "@LLVM_SOURCE_DIR@")<br>
>>  set_default("llvm_obj_root", "@LLVM_BINARY_DIR@")<br>
>>  set_default("compiler_rt_src_root", "@COMPILER_RT_SOURCE_DIR@")<br>
>> +set_default("compiler_rt_obj_root", "@COMPILER_RT_BINARY_DIR@")<br>
>>  set_default("llvm_tools_dir", "@LLVM_TOOLS_DIR@")<br>
>>  set_default("clang", "@COMPILER_RT_TEST_COMPILER@")<br>
>>  set_default("compiler_id", "@COMPILER_RT_TEST_COMPILER_ID@")<br>
>><br>
>> Modified: compiler-rt/trunk/test/tsan/CMakeLists.txt<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/CMakeLists.txt?rev=208737&r1=208736&r2=208737&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/CMakeLists.txt?rev=208737&r1=208736&r2=208737&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/tsan/CMakeLists.txt (original)<br>
>> +++ compiler-rt/trunk/test/tsan/CMakeLists.txt Tue May 13 17:30:16 2014<br>
>> @@ -1,11 +1,17 @@<br>
>> -configure_lit_site_cfg(<br>
>> -  ${CMAKE_CURRENT_SOURCE_DIR}/<a href="http://lit.site.cfg.in" target="_blank">lit.site.cfg.in</a><br>
>> -  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)<br>
>> -<br>
>>  set(TSAN_TEST_DEPS ${SANITIZER_COMMON_LIT_TEST_DEPS})<br>
>>  if(NOT COMPILER_RT_STANDALONE_BUILD)<br>
>>    list(APPEND TSAN_TEST_DEPS tsan)<br>
>>  endif()<br>
>> +if(COMPILER_RT_HAS_LIBCXX_SOURCES)<br>
>> +  list(APPEND TSAN_TEST_DEPS libcxx_tsan)<br>
>> +  set(TSAN_HAS_LIBCXX True)<br>
>> +else()<br>
>> +  set(TSAN_HAS_LIBCXX False)<br>
>> +endif()<br>
>> +<br>
>> +configure_lit_site_cfg(<br>
>> +  ${CMAKE_CURRENT_SOURCE_DIR}/<a href="http://lit.site.cfg.in" target="_blank">lit.site.cfg.in</a><br>
>> +  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)<br>
>><br>
>>  if(COMPILER_RT_INCLUDE_TESTS)<br>
>>    configure_lit_site_cfg(<br>
>><br>
>> Added: compiler-rt/trunk/test/tsan/libcxx/lit.local.cfg<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/libcxx/lit.local.cfg?rev=208737&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/libcxx/lit.local.cfg?rev=208737&view=auto</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/tsan/libcxx/lit.local.cfg (added)<br>
>> +++ compiler-rt/trunk/test/tsan/libcxx/lit.local.cfg Tue May 13 17:30:16<br>
>> 2014<br>
>> @@ -0,0 +1,10 @@<br>
>> +def getRoot(config):<br>
>> +  if not config.parent:<br>
>> +    return config<br>
>> +  return getRoot(config.parent)<br>
>> +<br>
>> +root = getRoot(config)<br>
>> +<br>
>> +if not root.has_libcxx:<br>
>> +  config.unsupported = True<br>
>> +<br>
>><br>
>> Added: compiler-rt/trunk/test/tsan/libcxx/std_shared_ptr.cc<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/libcxx/std_shared_ptr.cc?rev=208737&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/libcxx/std_shared_ptr.cc?rev=208737&view=auto</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/tsan/libcxx/std_shared_ptr.cc (added)<br>
>> +++ compiler-rt/trunk/test/tsan/libcxx/std_shared_ptr.cc Tue May 13<br>
>> 17:30:16 2014<br>
>> @@ -0,0 +1,24 @@<br>
>> +// RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s<br>
>> +#include <stdio.h><br>
>> +#include <memory><br>
>> +#include <thread><br>
>> +<br>
>> +int main() {<br>
>> +  int v1 = 0;<br>
>> +  int v2 = 0;<br>
>> +  std::thread t1;<br>
>> +  std::thread t2;<br>
>> +<br>
>> +  {<br>
>> +     auto thingy = std::make_shared<int>(42);<br>
>> +     t1 = std::thread([thingy, &v1] { v1 = *thingy; });<br>
>> +     t2 = std::thread([thingy, &v2] { v2 = *thingy; });<br>
>> +  }<br>
>> +<br>
>> +  t1.join();<br>
>> +  t2.join();<br>
>> +  printf("%d %d\n", v1, v2);<br>
>> +  // CHECK-NOT: ThreadSanitizer: data race<br>
>> +  // CHECK: 42 42<br>
>> +  return 0;<br>
>> +}<br>
>><br>
>> Modified: compiler-rt/trunk/test/tsan/lit.cfg<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/lit.cfg?rev=208737&r1=208736&r2=208737&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/lit.cfg?rev=208737&r1=208736&r2=208737&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/tsan/lit.cfg (original)<br>
>> +++ compiler-rt/trunk/test/tsan/lit.cfg Tue May 13 17:30:16 2014<br>
>> @@ -31,6 +31,18 @@ clang_tsan_cflags = ["-fsanitize=thread"<br>
>>                       "-ldl",<br>
>>                       "-m64"]<br>
>>  clang_tsan_cxxflags = config.cxx_mode_flags + clang_tsan_cflags<br>
>> +# Add additional flags if we're using instrumented libc++.<br>
>> +if config.has_libcxx:<br>
>> +  # FIXME: Dehardcode this path somehow.<br>
>> +  libcxx_path = os.path.join(config.compiler_rt_obj_root, "lib",<br>
>> +                             "tsan", "libcxx_tsan")<br>
>> +  libcxx_incdir = os.path.join(libcxx_path, "include", "c++", "v1")<br>
>> +  libcxx_libdir = os.path.join(libcxx_path, "lib")<br>
>> +  libcxx_so = os.path.join(libcxx_libdir, "libc++.so")<br>
>> +  clang_tsan_cxxflags += ["-std=c++11",<br>
>> +                          "-I%s" % libcxx_incdir,<br>
>> +                          libcxx_so,<br>
>> +                          "-Wl,-rpath=%s" % libcxx_libdir]<br>
>><br>
>>  def build_invocation(compile_flags):<br>
>>    return " " + " ".join([config.clang] + compile_flags) + " "<br>
>><br>
>> Modified: compiler-rt/trunk/test/tsan/<a href="http://lit.site.cfg.in" target="_blank">lit.site.cfg.in</a><br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/lit.site.cfg.in?rev=208737&r1=208736&r2=208737&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/lit.site.cfg.in?rev=208737&r1=208736&r2=208737&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/test/tsan/<a href="http://lit.site.cfg.in" target="_blank">lit.site.cfg.in</a> (original)<br>
>> +++ compiler-rt/trunk/test/tsan/<a href="http://lit.site.cfg.in" target="_blank">lit.site.cfg.in</a> Tue May 13 17:30:16 2014<br>
>> @@ -1,6 +1,8 @@<br>
>>  ## Autogenerated by LLVM/Clang configuration.<br>
>>  # Do not edit!<br>
>><br>
>> +config.has_libcxx = @TSAN_HAS_LIBCXX@<br>
>> +<br>
>>  # Load common config for all compiler-rt lit tests.<br>
>>  lit_config.load_config(config,<br>
>> "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")<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>
><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>
><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><div>Alexey Samsonov, Mountain View, CA</div></div>
</div>