<div dir="ltr">I've reverted test change in r175655.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 20, 2013 at 11:28 PM, Alexander Potapenko <span dir="ltr"><<a href="mailto:glider@google.com" target="_blank">glider@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This has obviously been caused by the change to asan_test.cc (I've<br>
made it crash the main process instead of the forked one).<br>
I'll revert this file once I get to work (tomorrow noon), or you can<br>
do that if you prefer.<br>
Thanks a lot for catching this!<br>
<div><div class="h5"><br>
On Wed, Feb 20, 2013 at 11:22 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
><br>
><br>
><br>
> On Wed, Feb 20, 2013 at 7:46 AM, Alexander Potapenko <<a href="mailto:glider@google.com">glider@google.com</a>><br>
> wrote:<br>
>><br>
>> Author: glider<br>
>> Date: Wed Feb 20 09:46:02 2013<br>
>> New Revision: 175631<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=175631&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=175631&view=rev</a><br>
>> Log:<br>
>> [ASan] Delete asan/dynamic dir and temporarily move the interposers<br>
>> declarations to asan_intercepted_functions.h<br>
>> Now that we have only one dependency on asan_intercepted_functions.h, we<br>
>> can unite that code with the interceptors declarations in<br>
>> asan_interceptors.cc and get rid of asan_intercepted_functions.h<br>
><br>
><br>
> I'm going to go out on a limb & suggest that this (or some related changes<br>
> from you recently) caused this:<br>
><br>
> FAIL: AddressSanitizer-Unit ::<br>
> /usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test/AddressSanitizer.AllocDeallocMismatch<br>
> (41 of 14077)<br>
> ******************** TEST 'AddressSanitizer-Unit ::<br>
> /usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test/AddressSanitizer.AllocDeallocMismatch'<br>
> FAILED ********************<br>
> Note: Google Test filter = AddressSanitizer.AllocDeallocMismatch<br>
> [==========] Running 1 test from 1 test case.<br>
> [----------] Global test environment set-up.<br>
> [----------] 1 test from AddressSanitizer<br>
> [ RUN      ] AddressSanitizer.AllocDeallocMismatch<br>
> =================================================================<br>
> ==14202== ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs<br>
> free) on 0xf7302870<br>
>     #0 0x8094714<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8094714)<br>
>     #1 0x811009d<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x811009d)<br>
>     #2 0x8254aa5<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8254aa5)<br>
>     #3 0x82574c2<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x82574c2)<br>
>     #4 0x8258ec9<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8258ec9)<br>
>     #5 0x82699da<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x82699da)<br>
>     #6 0x828bffb<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x828bffb)<br>
>     #7 0x8269012<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8269012)<br>
>     #8 0x80c071f<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x80c071f)<br>
> 0xf7302870 is located 0 bytes inside of 4-byte region<br>
> [0xf7302870,0xf7302874)<br>
> allocated by thread T0 here:<br>
>     #0 0x8094c94<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8094c94)<br>
>     #1 0x811008e<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x811008e)<br>
>     #2 0x8254aa5<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8254aa5)<br>
>     #3 0x82574c2<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x82574c2)<br>
>     #4 0x8258ec9<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8258ec9)<br>
>     #5 0x82699da<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x82699da)<br>
>     #6 0x828bffb<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x828bffb)<br>
>     #7 0x8269012<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x8269012)<br>
>     #8 0x80c071f<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-i386-Test+0x80c071f)<br>
> ==14202== HINT: if you don't care about these warnings you may set<br>
> ASAN_OPTIONS=alloc_dealloc_mismatch=0<br>
> ==14202== ABORTING<br>
><br>
> ********************<br>
> Testing:<br>
> FAIL: AddressSanitizer-Unit ::<br>
> /usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test/AddressSanitizer.AllocDeallocMismatch<br>
> (175 of 14077)<br>
> ******************** TEST 'AddressSanitizer-Unit ::<br>
> /usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test/AddressSanitizer.AllocDeallocMismatch'<br>
> FAILED ********************<br>
> Note: Google Test filter = AddressSanitizer.AllocDeallocMismatch<br>
> [==========] Running 1 test from 1 test case.<br>
> [----------] Global test environment set-up.<br>
> [----------] 1 test from AddressSanitizer<br>
> [ RUN      ] AddressSanitizer.AllocDeallocMismatch<br>
> =================================================================<br>
> ==16677== ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs<br>
> free) on 0x60040000b0f0<br>
>     #0 0x451212<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x451212)<br>
>     #1 0x5ebe67<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5ebe67)<br>
>     #2 0x5be005<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5be005)<br>
>     #3 0x5c17fd<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5c17fd)<br>
>     #4 0x5cf9f9<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5cf9f9)<br>
>     #5 0x5ed2c7<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5ed2c7)<br>
>     #6 0x5cf1a6<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5cf1a6)<br>
> 0x60040000b0f0 is located 0 bytes inside of 4-byte region<br>
> [0x60040000b0f0,0x60040000b0f4)<br>
> allocated by thread T0 here:<br>
>     #0 0x451742<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x451742)<br>
>     #1 0x4b9e3a<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x4b9e3a)<br>
>     #2 0x5be005<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5be005)<br>
>     #3 0x5c17fd<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5c17fd)<br>
>     #4 0x5cf9f9<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5cf9f9)<br>
>     #5 0x5ed2c7<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5ed2c7)<br>
>     #6 0x5cf1a6<br>
> (/usr/local/google/home/blaikie/dev/llvm/build/clang/debug/projects/compiler-rt/lib/asan/tests/Asan-x86_64-Test+0x5cf1a6)<br>
> ==16677== HINT: if you don't care about these warnings you may set<br>
> ASAN_OPTIONS=alloc_dealloc_mismatch=0<br>
> ==16677== ABORTING<br>
><br>
> ********************<br>
><br>
> Any ideas?<br>
><br>
>><br>
>><br>
>> Removed:<br>
>>     compiler-rt/trunk/lib/asan/dynamic/<br>
>> Modified:<br>
>>     compiler-rt/trunk/lib/asan/CMakeLists.txt<br>
>>     compiler-rt/trunk/lib/asan/Makefile.mk<br>
>>     compiler-rt/trunk/lib/asan/asan_intercepted_functions.h<br>
>>     compiler-rt/trunk/lib/asan/tests/asan_test.cc<br>
>><br>
>> Modified: compiler-rt/trunk/lib/asan/CMakeLists.txt<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=175631&r1=175630&r2=175631&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/CMakeLists.txt?rev=175631&r1=175630&r2=175631&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/asan/CMakeLists.txt (original)<br>
>> +++ compiler-rt/trunk/lib/asan/CMakeLists.txt Wed Feb 20 09:46:02 2013<br>
>> @@ -25,7 +25,6 @@ set(ASAN_SOURCES<br>
>><br>
>>  set(ASAN_DYLIB_SOURCES<br>
>>    ${ASAN_SOURCES}<br>
>> -  dynamic/asan_interceptors_dynamic.cc<br>
>>    )<br>
>><br>
>>  include_directories(..)<br>
>><br>
>> Modified: compiler-rt/trunk/lib/asan/Makefile.mk<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/Makefile.mk?rev=175631&r1=175630&r2=175631&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/Makefile.mk?rev=175631&r1=175630&r2=175631&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/asan/Makefile.mk (original)<br>
>> +++ compiler-rt/trunk/lib/asan/Makefile.mk Wed Feb 20 09:46:02 2013<br>
>> @@ -8,7 +8,7 @@<br>
>><br>
>> #===------------------------------------------------------------------------===#<br>
>><br>
>>  ModuleName := asan<br>
>> -SubDirs := dynamic<br>
>> +SubDirs :=<br>
>><br>
>>  Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file)))<br>
>>  ObjNames := $(Sources:%.cc=%.o)<br>
>><br>
>> Modified: compiler-rt/trunk/lib/asan/asan_intercepted_functions.h<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_intercepted_functions.h?rev=175631&r1=175630&r2=175631&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_intercepted_functions.h?rev=175631&r1=175630&r2=175631&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/asan/asan_intercepted_functions.h (original)<br>
>> +++ compiler-rt/trunk/lib/asan/asan_intercepted_functions.h Wed Feb 20<br>
>> 09:46:02 2013<br>
>> @@ -79,9 +79,36 @@ using __sanitizer::uptr;<br>
>>  # define ASAN_INTERCEPT___CXA_THROW 0<br>
>>  #endif<br>
>><br>
>> +#define INTERPOSE_FUNCTION(function) \<br>
>> +    { reinterpret_cast<const uptr>(WRAP(function)), \<br>
>> +      reinterpret_cast<const uptr>(function) }<br>
>> +<br>
>> +#define INTERPOSE_FUNCTION_2(function, wrapper) \<br>
>> +    { reinterpret_cast<const uptr>(wrapper), \<br>
>> +      reinterpret_cast<const uptr>(function) }<br>
>> +<br>
>> +struct interpose_substitution {<br>
>> +  const uptr replacement;<br>
>> +  const uptr original;<br>
>> +};<br>
>> +<br>
>> +#define INTERPOSER(func) __attribute__((used)) \<br>
>> +const interpose_substitution substitution_##func[] \<br>
>> +    __attribute__((section("__DATA, __interpose"))) = { \<br>
>> +  INTERPOSE_FUNCTION(func), \<br>
>> +}<br>
>> +<br>
>> +#define INTERPOSER_2(func, wrapper) __attribute__((used)) \<br>
>> +const interpose_substitution substitution_##func[] \<br>
>> +    __attribute__((section("__DATA, __interpose"))) = { \<br>
>> +  INTERPOSE_FUNCTION_2(func, wrapper), \<br>
>> +}<br>
>> +<br>
>> +<br>
>>  #define DECLARE_FUNCTION_AND_WRAPPER(ret_type, func, ...) \<br>
>>    ret_type func(__VA_ARGS__); \<br>
>> -  ret_type WRAP(func)(__VA_ARGS__)<br>
>> +  ret_type WRAP(func)(__VA_ARGS__); \<br>
>> +  INTERPOSER(func)<br>
>><br>
>>  // Use extern declarations of intercepted functions on Mac and Windows<br>
>>  // to avoid including system headers.<br>
>> @@ -141,7 +168,8 @@ DECLARE_FUNCTION_AND_WRAPPER(char*, strd<br>
>>  DECLARE_FUNCTION_AND_WRAPPER(uptr, strnlen, const char *s, uptr maxlen);<br>
>>  # endif<br>
>>  # if ASAN_INTERCEPT_INDEX<br>
>> -DECLARE_FUNCTION_AND_WRAPPER(char*, index, const char *string, int c);<br>
>> +char* index(const char *string, int c);<br>
>> +INTERPOSER_2(index, WRAP(strchr));<br>
>>  # endif<br>
>><br>
>>  // stdlib.h<br>
>> @@ -221,17 +249,6 @@ DECLARE_FUNCTION_AND_WRAPPER(int, fscanf<br>
>>                               void* stream, const char *format, ...);<br>
>>  DECLARE_FUNCTION_AND_WRAPPER(int, sscanf,  // NOLINT<br>
>>                               const char *str, const char *format, ...);<br>
>> -DECLARE_FUNCTION_AND_WRAPPER(int, __isoc99_vscanf, const char *format,<br>
>> -                             va_list ap);<br>
>> -DECLARE_FUNCTION_AND_WRAPPER(int, __isoc99_vsscanf, const char *str,<br>
>> -                             const char *format, va_list ap);<br>
>> -DECLARE_FUNCTION_AND_WRAPPER(int, __isoc99_vfscanf, void *stream,<br>
>> -                             const char *format, va_list ap);<br>
>> -DECLARE_FUNCTION_AND_WRAPPER(int, __isoc99_scanf, const char *format,<br>
>> ...);<br>
>> -DECLARE_FUNCTION_AND_WRAPPER(int, __isoc99_fscanf,<br>
>> -                             void* stream, const char *format, ...);<br>
>> -DECLARE_FUNCTION_AND_WRAPPER(int, __isoc99_sscanf,  // NOLINT<br>
>> -                             const char *str, const char *format, ...);<br>
>>  # endif<br>
>><br>
>>  # if defined(__APPLE__)<br>
>> @@ -294,9 +311,11 @@ DECLARE_FUNCTION_AND_WRAPPER(void *, val<br>
>>  DECLARE_FUNCTION_AND_WRAPPER(size_t, malloc_good_size, size_t size);<br>
>>  DECLARE_FUNCTION_AND_WRAPPER(int, posix_memalign,<br>
>>                               void **memptr, size_t alignment, size_t<br>
>> size);<br>
>> +#if 0<br>
>>  DECLARE_FUNCTION_AND_WRAPPER(void, _malloc_fork_prepare, void);<br>
>>  DECLARE_FUNCTION_AND_WRAPPER(void, _malloc_fork_parent, void);<br>
>>  DECLARE_FUNCTION_AND_WRAPPER(void, _malloc_fork_child, void);<br>
>> +#endif<br>
>><br>
>><br>
>><br>
>><br>
>> Modified: compiler-rt/trunk/lib/asan/tests/asan_test.cc<br>
>> URL:<br>
>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_test.cc?rev=175631&r1=175630&r2=175631&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_test.cc?rev=175631&r1=175630&r2=175631&view=diff</a><br>

>><br>
>> ==============================================================================<br>
>> --- compiler-rt/trunk/lib/asan/tests/asan_test.cc (original)<br>
>> +++ compiler-rt/trunk/lib/asan/tests/asan_test.cc Wed Feb 20 09:46:02 2013<br>
>> @@ -1133,11 +1133,15 @@ TEST(AddressSanitizer, AttributeNoAddres<br>
>><br>
>>  // It doesn't work on Android, as calls to new/delete go through<br>
>> malloc/free.<br>
>>  #if !defined(ANDROID) && !defined(__ANDROID__)<br>
>> +#if 0<br>
>>  static string MismatchStr(const string &str) {<br>
>>    return string("AddressSanitizer: alloc-dealloc-mismatch \\(") + str;<br>
>>  }<br>
>> +#endif<br>
>><br>
>>  TEST(AddressSanitizer, AllocDeallocMismatch) {<br>
>> +  free(Ident(new int));<br>
>> +#if 0<br>
>>    EXPECT_DEATH(free(Ident(new int)),<br>
>>                 MismatchStr("operator new vs free"));<br>
>>    EXPECT_DEATH(free(Ident(new int[2])),<br>
>> @@ -1150,6 +1154,7 @@ TEST(AddressSanitizer, AllocDeallocMisma<br>
>>                 MismatchStr("operator new vs operator delete \\[\\]"));<br>
>>    EXPECT_DEATH(delete [] (Ident((int*)malloc(2 * sizeof(int)))),<br>
>>                 MismatchStr("malloc vs operator delete \\[\\]"));<br>
>> +#endif<br>
>>  }<br>
>>  #endif<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>
<br>
</div></div>--<br>
Alexander Potapenko<br>
Software Engineer<br>
Google Moscow<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<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><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div>