<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">The error makes it look like the test does not generate an ASAN violation when we dlopen() a shared library and then perform a global buffer overflow on a symbol within that library.</div><div class=""><div class=""><pre style="font-family: 'Courier New', courier, monotype, monospace;" class=""><span class="stdout">not  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp 3 2>&1 | FileCheck --check-prefix ASAN-CHECK-3 /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c
</span></pre></div><div class="">I'm assuming the dlopen or dlsym call fails. Are those restricted on Android? I can split that off into a separate test and make it XFAIL if so. Otherwise if there is something else I need to be aware of with Android tests to make this work, please let me know.</div><div class=""><br class=""></div><div class="">I've committed a version that logs output if dl* fails, r273629.</div><div class=""><br class=""></div><div class="">Ryan</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jun 23, 2016, at 15:51, Mike Aizatsky <<a href="mailto:aizatsky@google.com" class="">aizatsky@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Ryan,<div class=""><br class=""></div><div class="">This test breaks the bot:</div><div class=""><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/24502" class="">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/24502</a><br class=""></div><div class=""><br class=""></div><div class=""><div class="">@@@BUILD_STEP run asan lit tests [arm/hammerhead-userdebug/LMY48T]@@@</div><div class="">+ echo @@@BUILD_STEP run asan lit tests '[arm/hammerhead-userdebug/LMY48T]@@@'</div><div class="">+ cd /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm</div><div class="">+ ninja check-asan</div><div class="">[1/1] Running the AddressSanitizer tests</div><div class="">-- Testing: 364 tests, 16 threads --</div><div class="">Testing: 0 .. 10.. 20.. </div><div class="">FAIL: AddressSanitizer-arm-android :: TestCases/Posix/global-registration.c (112 of 364)</div><div class="">******************** TEST 'AddressSanitizer-arm-android :: TestCases/Posix/global-registration.c' FAILED ********************</div><div class="">Script:</div><div class="">--</div><div class="">/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/android_commands/android_compile.py  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm_build64/bin/clang -fsanitize=address -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only --target=armv7-linux-androideabi --sysroot=/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm/sysroot -B/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm -lm -shared-libasan -c -o /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp-one.o -DDYNAMICLIB=\"/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/<a href="http://global-registration.c.tmp-dynamic.so/" class="">global-registration.c.tmp-dynamic.so</a>\" -DMAIN_FILE /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c</div><div class="">/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/android_commands/android_compile.py  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm_build64/bin/clang -fsanitize=address -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only --target=armv7-linux-androideabi --sysroot=/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm/sysroot -B/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm -lm -shared-libasan -c -o /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp-two.o -DSECONDARY_FILE /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c</div><div class="">/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/android_commands/android_compile.py  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm_build64/bin/clang -fsanitize=address -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only --target=armv7-linux-androideabi --sysroot=/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm/sysroot -B/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm -lm -shared-libasan -o /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp-one.o /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp-two.o</div><div class="">/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/android_commands/android_compile.py  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm_build64/bin/clang -fsanitize=address -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only --target=armv7-linux-androideabi --sysroot=/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm/sysroot -B/mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/../../../android-ndk/standalone-arm -lm -shared-libasan -shared -fPIC -o /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/<a href="http://global-registration.c.tmp-dynamic.so/" class="">global-registration.c.tmp-dynamic.so</a> -DSHARED_LIBRARY_FILE /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c</div><div class="">not  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp 1 2>&1 | FileCheck --check-prefix ASAN-CHECK-1 /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c</div><div class="">not  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp 2 2>&1 | FileCheck --check-prefix ASAN-CHECK-2 /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c</div><div class="">not  /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig/TestCases/Posix/Output/global-registration.c.tmp 3 2>&1 | FileCheck --check-prefix ASAN-CHECK-3 /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c</div><div class="">--</div><div class="">Exit Code: 2</div><div class=""><br class=""></div><div class="">Command Output (stderr):</div><div class="">--</div><div class="">clang-3.9: warning: -lm: 'linker' input unused</div><div class="">clang-3.9: warning: -lm: 'linker' input unused</div><div class="">FileCheck error: '-' is empty.</div><div class="">FileCheck command line:  FileCheck --check-prefix ASAN-CHECK-3 /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/projects/compiler-rt/test/asan/TestCases/Posix/global-registration.c</div><div class=""><br class=""></div><div class="">--</div><div class=""><br class=""></div><div class="">********************</div><div class="">Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. </div><div class="">Testing Time: 537.93s</div><div class="">********************</div><div class="">Failing Tests (1):</div><div class="">    AddressSanitizer-arm-android :: TestCases/Posix/global-registration.c</div><div class=""><br class=""></div><div class="">  Expected Passes    : 165</div><div class="">  Expected Failures  : 40</div><div class="">  Unsupported Tests  : 158</div><div class="">  Unexpected Failures: 1</div><div class="">FAILED: cd /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan && /usr/bin/python2.7 /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/llvm/utils/lit/lit.py -sv /mnt/b/sanitizer-buildbot1/sanitizer-x86_64-linux/build/compiler_rt_build_android_arm/test/asan/ARMAndroidConfig</div><div class="">ninja: build stopped: subcommand failed.</div><div class="">@@@STEP_FAILURE@@@</div><div class="">+ echo @@@STEP_FAILURE@@@</div><div class="">+ echo @@@BUILD_STEP run sanitizer_common tests '[arm/hammerhead-userdebug/LMY48T]@@@'</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">--------------------------------------------------------------------------------</div><div class="">started: Thu Jun 23 13:34:17 2016</div><div class="">ended: Thu Jun 23 15:20:10 2016</div><div class="">duration: 1 hrs, 45 mins, 53 secs</div></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, Jun 22, 2016 at 1:06 PM Ryan Govostes via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rgov<br class="">
Date: Wed Jun 22 14:59:10 2016<br class="">
New Revision: 273464<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=273464&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=273464&view=rev</a><br class="">
Log:<br class="">
[asan] Add a test case for global registration<br class="">
<br class="">
This test case checks that globals from all object files are being registered<br class="">
after they've been linked together. It also checks that globals from libraries<br class="">
loaded at runtime are registered.<br class="">
<br class="">
<br class="">
Added:<br class="">
    compiler-rt/trunk/test/asan/TestCases/Posix/global-registration.c<br class="">
<br class="">
Added: compiler-rt/trunk/test/asan/TestCases/Posix/global-registration.c<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/global-registration.c?rev=273464&view=auto" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/global-registration.c?rev=273464&view=auto</a><br class="">
==============================================================================<br class="">
--- compiler-rt/trunk/test/asan/TestCases/Posix/global-registration.c (added)<br class="">
+++ compiler-rt/trunk/test/asan/TestCases/Posix/global-registration.c Wed Jun 22 14:59:10 2016<br class="">
@@ -0,0 +1,56 @@<br class="">
+// Test that globals from different shared objects all get registered.<br class="">
+<br class="">
+// This source file is compiled into three different source object files. Each<br class="">
+// object file declares a global buffer. The first two are linked together, and<br class="">
+// the third is loaded at runtime. We make sure that out-of-bounds accesses<br class="">
+// are caught for all three buffers.<br class="">
+<br class="">
+// RUN: %clang_asan -c -o %t-one.o -DDYNAMICLIB=\"%t-dynamic.so\" -DMAIN_FILE %s<br class="">
+// RUN: %clang_asan -c -o %t-two.o -DSECONDARY_FILE %s<br class="">
+// RUN: %clang_asan -o %t %t-one.o %t-two.o<br class="">
+// RUN: %clang_asan -shared -o %t-dynamic.so -DSHARED_LIBRARY_FILE %s<br class="">
+// RUN: not %run %t 1 2>&1 | FileCheck --check-prefix ASAN-CHECK-1 %s<br class="">
+// RUN: not %run %t 2 2>&1 | FileCheck --check-prefix ASAN-CHECK-2 %s<br class="">
+// RUN: not %run %t 3 2>&1 | FileCheck --check-prefix ASAN-CHECK-3 %s<br class="">
+<br class="">
+#if MAIN_FILE<br class="">
+<br class="">
+#include <dlfcn.h><br class="">
+#include <stdlib.h><br class="">
+<br class="">
+extern char buffer2[1];<br class="">
+char buffer1[1] = { };<br class="">
+<br class="">
+int main(int argc, char *argv[]) {<br class="">
+  int n = atoi(argv[1]);<br class="">
+  if (n == 1) {<br class="">
+    buffer1[argc] = 0;<br class="">
+    // ASAN-CHECK-1: {{0x.* is located 1 bytes .* 'buffer1'}}<br class="">
+  } else if (n == 2) {<br class="">
+    buffer2[argc] = 0;<br class="">
+    // ASAN-CHECK-2: {{0x.* is located 1 bytes .* 'buffer2'}}<br class="">
+  } else if (n == 3) {<br class="">
+    void *handle = dlopen(DYNAMICLIB, RTLD_NOW);<br class="">
+    if (!handle)<br class="">
+      return 1;<br class="">
+<br class="">
+    char *buffer = (char *)dlsym(handle, "buffer3");<br class="">
+    if (!buffer)<br class="">
+      return 1;<br class="">
+<br class="">
+    buffer[argc] = 0;<br class="">
+    // ASAN-CHECK-3: {{0x.* is located 1 bytes .* 'buffer3'}}<br class="">
+  }<br class="">
+<br class="">
+  return 0;<br class="">
+}<br class="">
+<br class="">
+#elif SECONDARY_FILE<br class="">
+<br class="">
+char buffer2[1] = { };<br class="">
+<br class="">
+#elif SHARED_LIBRARY_FILE<br class="">
+<br class="">
+char buffer3[1] = { };<br class="">
+<br class="">
+#endif<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="">
</blockquote></div><div dir="ltr" class="">-- <br class=""></div><div data-smartmail="gmail_signature" class="">Mike<br class="">Sent from phone</div>
</div></blockquote></div><br class=""></div></div></body></html>