Open GoogleCodeExporter opened 9 years ago
[deleted comment]
http://llvm.org/viewvc/llvm-project?rev=182456&view=rev adds a workaround and a
better test.
Full fix may require a significant surgery, so I'd like to see if a simple thing
is enough.
Original comment by konstant...@gmail.com
on 22 May 2013 at 9:04
I've got a test case that gives a false-positive error around swapcontext:
"ERROR: AddressSanitizer: SEGV on unknown address 0x000000000"
When I blacklist the file making that call, the code then prints a warning
referring to this bug:
"WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: . . .
False positive error reports may follow
For details see http://code.google.com/p/address-sanitizer/issues/detail?id=189"
It's from the test suite of the Charm++ parallel runtime system
(http://charmplusplus.org). If test cases for this would be useful, I'd be
happy to help in understanding that code. If you want it reduced, I can
probably do some, but it's a fairly large system with a lot of
cross-dependencies.
Original comment by unmob...@gmail.com
on 8 Jan 2014 at 8:30
Does asan actually report false positives after the warning about swapcontext?
A minimized test is always welcome, but we can not promise that we'll fix it --
swapcontext is a really tricky beast.
Original comment by konstant...@gmail.com
on 9 Jan 2014 at 4:50
Note that it generally makes little sense in blacklisting the code that
performs a NULL dereference.
Original comment by ramosian.glider@gmail.com
on 10 Jan 2014 at 10:39
Here is false positive.
When you destroy a std::exception_ptr allocated from another stack without
rethrowing it, then it crashes.
GCC 4.9.2 (on Gentoo). Boost 1.56.0 compiled with C++11 support.
{{{
==26409==WARNING: ASan is ignoring requested __asan_handle_no_return: stack
top: 0x7fff0420b000; bottom 0x63100000f000; size: 0x1cef041fc000
(31812891951104)
False positive error reports may follow
For details see http://code.google.com/p/address-sanitizer/issues/detail?id=189
=================================================================
==26409==ERROR: AddressSanitizer: stack-buffer-underflow on address
0x6310000104a0 at pc 0x7fd9fccdcde3 bp 0x631000010320 sp 0x63100000fac8
WRITE of size 240 at 0x6310000104a0 thread T0
#0 0x7fd9fccdcde2 (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libasan.so.1+0x2fde2)
#1 0x7fd9fbe8b046 in _Unwind_Resume (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libgcc_s.so.1+0x10046)
#2 0x406dc9 in my_coroutine(boost::coroutines::pull_coroutine<std::__exception_ptr::exception_ptr>&) (/tmp/a.out+0x406dc9)
#3 0x41e7f4 in boost::coroutines::detail::push_coroutine_object<boost::coroutines::pull_coroutine<std::__exception_ptr::exception_ptr>, std::__exception_ptr::exception_ptr, void (&)(boost::coroutines::pull_coroutine<std::__exception_ptr::exception_ptr>&), boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits> >::run(std::__exception_ptr::exception_ptr*) (/tmp/a.out+0x41e7f4)
#4 0x41bb88 in void boost::coroutines::detail::trampoline_push<boost::coroutines::detail::push_coroutine_object<boost::coroutines::pull_coroutine<std::__exception_ptr::exception_ptr>, std::__exception_ptr::exception_ptr, void (&)(boost::coroutines::pull_coroutine<std::__exception_ptr::exception_ptr>&), boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits> > >(long) (/tmp/a.out+0x41bb88)
#5 0x7fd9fc89e710 in make_fcontext (/usr/lib64/libboost_context-cxx11-gcc4_9_2.so.1.56.0+0x710)
0x6310000104a0 is located 64672 bytes inside of 65536-byte region
[0x631000000800,0x631000010800)
allocated by thread T0 here:
#0 0x7fd9fcd04787 in malloc (/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/libasan.so.1+0x57787)
#1 0x414890 in boost::coroutines::basic_standard_stack_allocator<boost::coroutines::stack_traits>::allocate(boost::coroutines::stack_context&, unsigned long) (/tmp/a.out+0x414890)
#2 0x40d975 in boost::coroutines::push_coroutine<std::__exception_ptr::exception_ptr>::push_coroutine<void (&)(boost::coroutines::pull_coroutine<std::__exception_ptr::exception_ptr>&)>(void (&)(boost::coroutines::pull_coroutine<std::__exception_ptr::exception_ptr>&), boost::coroutines::attributes const&) (/tmp/a.out+0x40d975)
#3 0x406ecf in main (/tmp/a.out+0x406ecf)
#4 0x7fd9fbaf8dc4 in __libc_start_main (/lib64/libc.so.6+0x24dc4)
}}}
Original comment by vda...@vizrt.com
on 10 Dec 2014 at 6:51
Attachments:
Original issue reported on code.google.com by
konstant...@gmail.com
on 22 May 2013 at 7:40