| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 191004
|
|
|
|
|
|
| |
output for fake stack
llvm-svn: 190932
|
|
|
|
|
|
| |
async-signal safe.
llvm-svn: 190663
|
|
|
|
|
|
| |
fake_stack exists (should fix 32-bit builds)
llvm-svn: 190594
|
|
|
|
|
|
| |
exists (should fix 32-bit builds)
llvm-svn: 190593
|
|
|
|
| |
llvm-svn: 190592
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change makes races between updates of thread-local stats and
merging all the thread-local stats together less harmful.
Reviewers: kcc
Reviewed By: kcc
CC: dvyukov, llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D1572
llvm-svn: 189744
|
|
|
|
|
|
|
|
| |
Update the main thread's os_id on every pthread_create, and before
initiating leak checking. This ensures that we have the correct os_id even if we
have forked after Init().
llvm-svn: 185815
|
|
|
|
|
|
| |
makes -fsanitize=address,use-after-return more robust: all SPEC tests pass now. In the default mode thread stacks become a bit smaller.
llvm-svn: 184934
|
|
|
|
|
|
| |
Fix for the case where disabler is used in pthread key destructor.
llvm-svn: 184553
|
|
|
|
|
|
| |
comment to the ALIGNED macro describing the correct usage
llvm-svn: 183214
|
|
|
|
| |
llvm-svn: 183105
|
|
|
|
|
|
|
| |
Objects allocated after a call to __lsan_disable() will be treated as
live memory. Also add a ScopedDisabler.
llvm-svn: 183099
|
|
|
|
|
|
| |
This CL enables thread support in LSan when used on top of ASan.
llvm-svn: 182854
|
|
|
|
| |
llvm-svn: 182378
|
|
|
|
|
|
| |
CHECK(a==b). Was puzzled why lint did not catch it. Turns out this check was disabled for asan source. fix all cases and enable the check
llvm-svn: 178872
|
|
|
|
|
|
| |
of PoisonShadow functions, store copies of __asan_global descriptors in a vector instead of list of pointers. This gives 3x speedup on both benchmarks and real binaries with lots of globals.
llvm-svn: 178239
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before: the function name was stored by the compiler as a constant string
and the run-time was printing it.
Now: the PC is stored instead and the run-time prints the full symbolized frame.
This adds a couple of instructions into every function with non-empty stack frame,
but also reduces the binary size because we store less strings (I saw 2% size reduction).
This change bumps the asan ABI version to v3.
compiler-rt part, llvm part will follow.
Example of report (now):
==31711==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffa77cf1c5 at pc 0x41feb0 bp 0x7fffa77cefb0 sp 0x7fffa77cefa8
READ of size 1 at 0x7fffa77cf1c5 thread T0
#0 0x41feaf in Frame0(int, char*, char*, char*) stack-oob-frames.cc:20
#1 0x41f7ff in Frame1(int, char*, char*) stack-oob-frames.cc:24
#2 0x41f477 in Frame2(int, char*) stack-oob-frames.cc:28
#3 0x41f194 in Frame3(int) stack-oob-frames.cc:32
#4 0x41eee0 in main stack-oob-frames.cc:38
#5 0x7f0c5566f76c (/lib/x86_64-linux-gnu/libc.so.6+0x2176c)
#6 0x41eb1c (/usr/local/google/kcc/llvm_cmake/a.out+0x41eb1c)
Address 0x7fffa77cf1c5 is located in stack of thread T0 at offset 293 in frame
#0 0x41f87f in Frame0(int, char*, char*, char*) stack-oob-frames.cc:12 <<<<<<<<<<<<<< this is new
This frame has 6 object(s):
[32, 36) 'frame.addr'
[96, 104) 'a.addr'
[160, 168) 'b.addr'
[224, 232) 'c.addr'
[288, 292) 's'
[352, 360) 'd'
llvm-svn: 177723
|
|
|
|
| |
llvm-svn: 177709
|
|
|
|
|
|
| |
ASan-specific AsanThreadRegistry.
llvm-svn: 177634
|
|
|
|
|
|
| |
into plain functions: they don't actually use registry
llvm-svn: 177501
|
|
|
|
|
|
| |
only there the stack top may be equal to the address space top. Noted by Andreas Schwab in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55975#c11 . Also make swapcontext interceptor a bit more robust
llvm-svn: 172807
|
|
|
|
|
|
| |
it completely to support platforms with multiple possible page sizes.
llvm-svn: 168517
|
|
|
|
|
|
| |
Instead, define our own SANITIZER_WORDSIZE
llvm-svn: 168424
|
|
|
|
|
|
| |
Kostya: return the known frame name for fake stack instead of looking it up.
llvm-svn: 168046
|
|
|
|
| |
llvm-svn: 168043
|
|
|
|
|
|
|
| |
the beginning of the fake frame when reporting an use-after-return error.
Fixes http://code.google.com/p/address-sanitizer/issues/detail?id=126
llvm-svn: 168040
|
|
|
|
| |
llvm-svn: 163308
|
|
|
|
| |
llvm-svn: 162747
|
|
|
|
|
|
| |
malloc() before ASan/TSan initialization is done
llvm-svn: 162673
|
|
|
|
|
|
|
| |
Test that child threads use the ASan allocator, that allocated memory can be passed to another thread and deallocated on it.
This should fix http://code.google.com/p/address-sanitizer/issues/detail?id=81
llvm-svn: 160630
|
|
|
|
| |
llvm-svn: 160347
|
|
|
|
| |
llvm-svn: 159933
|
|
|
|
| |
llvm-svn: 158448
|
|
|
|
| |
llvm-svn: 158140
|
|
|
|
| |
llvm-svn: 158078
|
|
|
|
| |
llvm-svn: 158074
|
|
|
|
| |
llvm-svn: 158059
|
|
|
|
| |
llvm-svn: 157927
|
|
|
|
| |
llvm-svn: 157747
|
|
|
|
| |
llvm-svn: 157746
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the current implementation AsanThread::GetFrameNameByAddr scans the
stack for a magic guard value to locate base address of the stack
frame. This is not reliable, especially on ARM, where the code that
stores this magic value has to construct it in a register from two
small intermediates; this register can then end up stored in a random
stack location in the prologue of another function.
With this change, GetFrameNameByAddr scans the shadow memory for the
signature of a left stack redzone instead. It is now possible to
remove the magic from the instrumentation pass for additional
performance gain. We keep it there for now just to make sure the new
algorithm does not fail in some corner case.
llvm-svn: 156710
|
|
|
|
|
|
|
|
|
| |
alternate
per-thread stacks for signal handling. This allows to print more verbose error reports
for stack overflows.
llvm-svn: 154092
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment, asan internal Printf() uses %l modifier for printing
values of size_t and related types. This works, because we control
both the implementation of Printf and all its uses, but can be a
little misleading.
This change adds support for %z to Printf(). All callers that print
sizes and pointers as integers are switched to %zu / %zx.
llvm-svn: 153177
|
|
|
|
| |
llvm-svn: 151366
|
|
|
|
| |
llvm-svn: 149940
|
|
|
|
|
|
| |
parent thread)
llvm-svn: 148286
|
|
|
|
| |
llvm-svn: 147930
|
|
|
|
|
|
| |
AsanThreadSummary in TSD and never remove it from there.
llvm-svn: 147910
|
|
|
|
| |
llvm-svn: 147788
|