Hi.
I am starting a new project 
<https://android.googlesource.com/platform/external/perfetto/+/master/> in 
Android land and setting up test coverage with sanitizers.
I wrote a meta-test 
<https://android.googlesource.com/platform/external/perfetto/+/master/libtracing/sanitizers_unittest.cc>
 to 
make sure that the sanitizers are actually shouting when there is a 
violation. Almost everything is working as expected (read: 
failing-as-intened). The only exception is LSan on Android (N, armv7), 
where both LSAN_Leak* 
<https://android.googlesource.com/platform/external/perfetto/+/master/libtracing/sanitizers_unittest.cc#70>
 tests 
silently succeed.
The same test with the same build configuration fails as expected on Linux. 
Likewise, the ASan test fails as expected on Android.
I am 90% sure this is me doing something wrong but can't tell what.
I looked at the assembly <https://ghostbin.com/paste/4vudu> and this 
doesn't see to be a case of clang outsmarting the test code (i.e. the 
generated code actually has two leaking malloc calls)
I am using the compiler toolchain (clang) and sanitizers lib from latest 
Android's NDK (r15c), targeting their libcxx/cxxabi.


Repro steps:
git checkout https://android.googlesource.com/platform/external/perfetto
build/install-build-deps  # will download ndk and emulators
gn gen out/android_lsan/ --args="is_lsan=true target_os=\"android\""
ninja -C out/android_lsan/ sanitizers_unittests
build/run_android_emulator &
build/run_android_test out/android_lsan sanitizers_unittests

These are the compiler flag used while building:
/s/perfetto/buildtools/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ 
-MMD -MF obj/libtracing/sanitizers_unittests.sanitizers_unittest.o.d 
-DLEAK_SANITIZER -DGTEST_LANG_CXX11=1 -I../.. 
-I../../buildtools/googletest/googletest/include 
-I../../buildtools/googletest/googlemock/include -gline-tables-only 
-funwind-tables -fstrict-aliasing -fstack-protector -fPIC -Wa,--noexecstack 
-Wformat -Wall -Werror -march=armv7-a -mfpu=neon -mthumb 
-isystem/s/perfetto/buildtools/ndk/platforms/android-21/arch-arm/usr/include 
--sysroot=/s/perfetto/buildtools/ndk/platforms/android-21/arch-arm 
-DANDROID --target=arm-linux-androideabi -Wextra 
-Wno-missing-field-initializers -Weverything -Wno-c++98-compat 
-Wno-c++98-compat-pedantic -Wno-gnu-include-next 
-Wno-gnu-statement-expression -Wno-padded -Wno-reserved-id-macro 
-Wno-unused-parameter -Wno-unknown-warning-option -fno-exceptions -fno-rtti 
-fno-omit-frame-pointer 
-fsanitize-blacklist=../../build/sanitizers/blacklist.txt -fsanitize=leak 
-fPIE -Wno-deprecated -Wno-global-constructors -Wno-missing-noreturn 
-Wno-shift-sign-overflow -Wno-undef -Wno-used-but-marked-unused 
-Wno-weak-vtables -fno-omit-frame-pointer -fsanitize=leak -std=c++11 
-I/s/perfetto/buildtools/ndk/sources/cxx-stl/llvm-libc++/include 
-I/s/perfetto/buildtools/ndk/sources/android/support/include 
-I/s/perfetto/buildtools/ndk/sources/cxx-stl/llvm-libc++abi/include -c 
../../libtracing/sanitizers_unittest.cc -o 
obj/libtracing/sanitizers_unittests.sanitizers_unittest.o

And this when linking
/s/perfetto/buildtools/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ 
-Wl,-z,nocopyreloc -gcc-toolchain 
/s/perfetto/buildtools/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
 
--sysroot=/s/perfetto/buildtools/ndk/platforms/android-21/arch-arm 
--target=arm-linux-androideabi -Wl,--exclude-libs,libunwind.a 
-Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libc++_static.a 
-Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro 
-Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -fPIE -pie 
-fsanitize=leak 
-L../../buildtools/ndk/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a 
-L../../buildtools/ndk/platforms/android-21/arch-arm/usr/lib 
obj/libtracing/sanitizers_unittests.sanitizers_unittest.o 
obj/buildtools/googletest/googletest/src/gtest.gtest-all.o 
obj/buildtools/googletest/googletest/src/gtest_main.gtest_main.o  -llog 
-lgcc -lc++_static -lc++abi -landroid_support -o sanitizers_unittests

-- 
You received this message because you are subscribed to the Google Groups 
"address-sanitizer" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to address-sanitizer+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to