[Bug sanitizer/91325] [ASAN] ASAN hangs at throw if called via dlopen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91325 Martin Liška changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #7 from Martin Liška --- Fixed on trunk.
[Bug sanitizer/91325] [ASAN] ASAN hangs at throw if called via dlopen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91325 --- Comment #6 from Martin Liška --- Author: marxin Date: Wed Aug 14 08:47:11 2019 New Revision: 274426 URL: https://gcc.gnu.org/viewcvs?rev=274426=gcc=rev Log: Libsanitizer merge from trunk r368656. 2019-08-14 Martin Liska PR sanitizer/89832 PR sanitizer/91325 * All source files: Merge from upstream 368656. Added: trunk/libsanitizer/asan/asan_activation.cpp trunk/libsanitizer/asan/asan_allocator.cpp trunk/libsanitizer/asan/asan_debugging.cpp trunk/libsanitizer/asan/asan_descriptions.cpp trunk/libsanitizer/asan/asan_errors.cpp trunk/libsanitizer/asan/asan_fake_stack.cpp trunk/libsanitizer/asan/asan_flags.cpp trunk/libsanitizer/asan/asan_fuchsia.cpp trunk/libsanitizer/asan/asan_globals.cpp trunk/libsanitizer/asan/asan_globals_win.cpp trunk/libsanitizer/asan/asan_interceptors.cpp trunk/libsanitizer/asan/asan_interceptors_memintrinsics.cpp trunk/libsanitizer/asan/asan_interceptors_vfork.S trunk/libsanitizer/asan/asan_linux.cpp trunk/libsanitizer/asan/asan_mac.cpp trunk/libsanitizer/asan/asan_malloc_linux.cpp trunk/libsanitizer/asan/asan_malloc_mac.cpp trunk/libsanitizer/asan/asan_malloc_win.cpp trunk/libsanitizer/asan/asan_memory_profile.cpp trunk/libsanitizer/asan/asan_new_delete.cpp trunk/libsanitizer/asan/asan_poisoning.cpp trunk/libsanitizer/asan/asan_posix.cpp trunk/libsanitizer/asan/asan_preinit.cpp trunk/libsanitizer/asan/asan_premap_shadow.cpp trunk/libsanitizer/asan/asan_report.cpp trunk/libsanitizer/asan/asan_rtems.cpp trunk/libsanitizer/asan/asan_rtl.cpp trunk/libsanitizer/asan/asan_shadow_setup.cpp trunk/libsanitizer/asan/asan_stack.cpp trunk/libsanitizer/asan/asan_stats.cpp trunk/libsanitizer/asan/asan_suppressions.cpp trunk/libsanitizer/asan/asan_thread.cpp trunk/libsanitizer/asan/asan_win.cpp trunk/libsanitizer/asan/asan_win_dll_thunk.cpp trunk/libsanitizer/asan/asan_win_dynamic_runtime_thunk.cpp trunk/libsanitizer/asan/asan_win_weak_interception.cpp trunk/libsanitizer/interception/interception_linux.cpp trunk/libsanitizer/interception/interception_mac.cpp trunk/libsanitizer/interception/interception_type_test.cpp trunk/libsanitizer/interception/interception_win.cpp trunk/libsanitizer/lsan/lsan.cpp trunk/libsanitizer/lsan/lsan_allocator.cpp trunk/libsanitizer/lsan/lsan_common.cpp trunk/libsanitizer/lsan/lsan_common_linux.cpp trunk/libsanitizer/lsan/lsan_common_mac.cpp trunk/libsanitizer/lsan/lsan_interceptors.cpp trunk/libsanitizer/lsan/lsan_linux.cpp trunk/libsanitizer/lsan/lsan_mac.cpp trunk/libsanitizer/lsan/lsan_malloc_mac.cpp trunk/libsanitizer/lsan/lsan_preinit.cpp trunk/libsanitizer/lsan/lsan_thread.cpp trunk/libsanitizer/sanitizer_common/sancov_flags.cpp trunk/libsanitizer/sanitizer_common/sanitizer_allocator.cpp trunk/libsanitizer/sanitizer_common/sanitizer_allocator_checks.cpp trunk/libsanitizer/sanitizer_common/sanitizer_allocator_report.cpp trunk/libsanitizer/sanitizer_common/sanitizer_common.cpp trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S trunk/libsanitizer/sanitizer_common/sanitizer_common_libcdep.cpp trunk/libsanitizer/sanitizer_common/sanitizer_common_nolibc.cpp trunk/libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cpp trunk/libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cpp trunk/libsanitizer/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp trunk/libsanitizer/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cpp trunk/libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cpp trunk/libsanitizer/sanitizer_common/sanitizer_coverage_win_weak_interception.cpp trunk/libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cpp trunk/libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cpp trunk/libsanitizer/sanitizer_common/sanitizer_errno.cpp trunk/libsanitizer/sanitizer_common/sanitizer_file.cpp trunk/libsanitizer/sanitizer_common/sanitizer_flag_parser.cpp trunk/libsanitizer/sanitizer_common/sanitizer_flags.cpp trunk/libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp trunk/libsanitizer/sanitizer_common/sanitizer_hash.h trunk/libsanitizer/sanitizer_common/sanitizer_libc.cpp trunk/libsanitizer/sanitizer_common/sanitizer_libignore.cpp trunk/libsanitizer/sanitizer_common/sanitizer_linux.cpp trunk/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp trunk/libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
[Bug sanitizer/91325] [ASAN] ASAN hangs at throw if called via dlopen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91325 Martin Liška changed: What|Removed |Added Status|WAITING |ASSIGNED Assignee|unassigned at gcc dot gnu.org |marxin at gcc dot gnu.org Target Milestone|--- |10.0 --- Comment #5 from Martin Liška --- Ok, then libsanitizer merge from trunk will fix it. I'm planning to do it in autumn this year for next GCC 10.1 release.
[Bug sanitizer/91325] [ASAN] ASAN hangs at throw if called via dlopen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91325 --- Comment #4 from Jens Seidel --- LLVM was affected by the same bug. They fixed it. But why is it not reproducable to everyone? https://bugs.llvm.org/show_bug.cgi?id=39641
[Bug sanitizer/91325] [ASAN] ASAN hangs at throw if called via dlopen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91325 --- Comment #3 from Jens Seidel --- (In reply to Martin Liška from comment #1) > Hm, I can't reproduce that with any version of GCC I have: Was trying it now also on other computers: On Debian 9 with g++ 6.3 and libc-2.24.so it works well, on Ubuntu 18.04 with g++ 7.4.0 (libc-2.27.so) and Ubuntu 16.04 with g++-8, g++-7, g++-6, g++-5 (libc-2.23.so) I get: $ ./main ==10179==AddressSanitizer CHECK failed: ../../../../src/libsanitizer/asan/asan_interceptors.cc:384 "((__interception::real___cxa_throw)) != (0)" (0x0, 0x0) #0 0x7f7030b3ac02 (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe9c02) #1 0x7f7030b59595 in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x108595) #2 0x7f7030a8926c in __interceptor___cxa_throw (/usr/lib/x86_64-linux-gnu/libasan.so.4+0x3826c) #3 0x7f702cffdc04 in foo /home/seidel/tmp/shlib.cpp:4 #4 0x7f702cffdc12 in bar /home/seidel/tmp/shlib.cpp:13 #5 0x55eb62962bf9 in main /home/seidel/tmp/main.c:11 #6 0x7f703047db96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) #7 0x55eb62962a89 in _start (/home/seidel/tmp/main+0xa89) On macOS (x86_64-apple-darwin18.6.0) it works, on SLES 12.0 (Suse) with g++ 4.8.5 I get: $ ./main ==7984== ERROR: AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes at address 0x02008fff7000 (12) ==7984== ReserveShadowMemoryRange failed while trying to map 0xdfff0001000 bytes. Perhaps you're using ulimit -v Aborted My affected system I reported initially is a Ubuntu 16.04 (libc-2.23.so). The other report refers to a Red Hat system. What can I do?
[Bug sanitizer/91325] [ASAN] ASAN hangs at throw if called via dlopen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91325 --- Comment #2 from Jens Seidel --- I am using /lib/x86_64-linux-gnu/libc.so.6 -> libc-2.23.so.
[Bug sanitizer/91325] [ASAN] ASAN hangs at throw if called via dlopen
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91325 Martin Liška changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2019-08-02 Ever confirmed|0 |1 --- Comment #1 from Martin Liška --- Hm, I can't reproduce that with any version of GCC I have: $ make clean ; make && ./main && echo OK rm -f libshlib.so main g++-7 -ggdb3 -fsanitize=address -Wextra -Wall -fPIC -shared -o libshlib.so shlib.cpp gcc-7 -ggdb3 -fsanitize=address -Wextra -Wall -o main main.c -ldl OK $ make clean ; make && ./main && echo OK rm -f libshlib.so main g++-9 -ggdb3 -fsanitize=address -Wextra -Wall -fPIC -shared -o libshlib.so shlib.cpp gcc-9 -ggdb3 -fsanitize=address -Wextra -Wall -o main main.c -ldl OK Maybe it's related to glibc version: Name : glibc Version: 2.29-7.3