| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
let's rename it to append_list_if
Doing s/append_if/append_list_if/, no functional change.
http://reviews.llvm.org/D5739
llvm-svn: 219860
|
|
|
|
|
|
|
| |
Write interceptor calls malloc, which causes a false
unsafe-call-in-signal-handler report. See the test.
llvm-svn: 219784
|
|
|
|
|
|
| |
build is used as gtest temp build dir, and is cleared during every build
llvm-svn: 219783
|
|
|
|
| |
llvm-svn: 219779
|
|
|
|
| |
llvm-svn: 219678
|
|
|
|
|
|
|
|
|
|
| |
The current handling (manual execution of atexit callbacks)
is overly complex and leads to constant problems due to mutual ordering of callbacks.
Instead simply wrap callbacks into our wrapper to establish
the necessary synchronization.
Fixes issue https://code.google.com/p/thread-sanitizer/issues/detail?id=80
llvm-svn: 219675
|
|
|
|
|
|
|
| |
Previously we said that it's a data race, which is confusing
if it happens in the same thread.
llvm-svn: 219600
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5708
llvm-svn: 219483
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5663
llvm-svn: 219395
|
|
|
|
|
|
|
|
|
|
|
| |
quite amusing on some programs:
RSS 9152 MB: shadow:2456 meta:1736 file:454 mmap:3442 trace:196 heap:866 other:0 stacks=176[1065994] nthr=157/159
...
RSS 30192 MB: shadow:613 meta:5550 file:1839 mmap:20487 trace:212 heap:1489 other:0 stacks=12870[1599445] nthr=162/165
...
RSS 42232 MB: shadow:599 meta:8199 file:2304 mmap:29420 trace:213 heap:1494 other:0 stacks=17794[1690645] nthr=162/165
llvm-svn: 218988
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On some tests we see that signals are not delivered
when a thread is blocked in epoll_wait. The hypothesis
is that the signal is delivered right before epoll_wait
call. The signal is queued as in_blocking_func is not set
yet, and then the thread just blocks in epoll_wait forever.
So double check pending signals *after* setting
in_blocking_func. This way we either queue a signal
and handle it in the beginning of a blocking func,
or process the signal synchronously if it's delivered
when in_blocking_func is set.
llvm-svn: 218070
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5207
llvm-svn: 217944
|
|
|
|
|
|
|
|
|
|
| |
I don't remember that crash on mmap in internal allocator
ever yielded anything useful, only crashes in rare wierd untested situations.
One of the reasons for crash was to catch if tsan starts allocating
clocks using mmap. Tsan does not allocate clocks using internal_alloc anymore.
Solve it once and for all by allowing mmaps.
llvm-svn: 217929
|
|
|
|
|
|
| |
Fixes https://code.google.com/p/thread-sanitizer/issues/detail?id=75
llvm-svn: 217908
|
|
|
|
|
|
| |
Most real programs setup much more than 1024 callbacks.
llvm-svn: 217713
|
|
|
|
| |
llvm-svn: 217559
|
|
|
|
|
|
|
|
|
| |
We may as well just use Symbolizer::GetOrInit() in all the cases.
Don't call Symbolizer::Get() early in tools initialization: these days
it doesn't do any important setup work, and we may as well create the
symbolizer the first time it's actually needed.
llvm-svn: 217558
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5210
llvm-svn: 217309
|
|
|
|
|
|
|
| |
The second part of the fix of
https://code.google.com/p/thread-sanitizer/issues/detail?id=71
llvm-svn: 217031
|
|
|
|
|
|
| |
Fixes issue https://code.google.com/p/thread-sanitizer/issues/detail?id=74
llvm-svn: 216906
|
|
|
|
|
|
|
|
|
|
|
| |
There interceptors do not seem to be strictly necessary for tsan.
But we see cases where the interceptors consume 70% of execution time.
Memory blocks passed to fgetgrent_r are "written to" by tsan several times.
First, there is some recursion (getgrnam_r calls fgetgrent_r), and each
function "writes to" the buffer. Then, the same memory is "written to"
twice, first as buf and then as pwbufp (both of them refer to the same addresses).
llvm-svn: 216904
|
|
|
|
|
|
|
| |
Fixes issue
https://code.google.com/p/thread-sanitizer/issues/detail?id=71
llvm-svn: 216903
|
|
|
|
|
|
| |
See http://reviews.llvm.org/D4794
llvm-svn: 216900
|
|
|
|
|
|
|
| |
Users expect synchronization between sigaction and arrival
of the signal. See the test for details.
llvm-svn: 216878
|
|
|
|
|
|
| |
functionality change intended
llvm-svn: 216407
|
|
|
|
|
|
| |
accidentally enabled in r215479. Add a test.
llvm-svn: 215763
|
|
|
|
|
|
| |
It was possimitically handling an aligned 8-byte access as 2 4-byte accesses.
llvm-svn: 215546
|
|
|
|
|
|
| |
sanitizer_common
llvm-svn: 215481
|
|
|
|
| |
llvm-svn: 215479
|
|
|
|
|
|
|
|
| |
favor of
a unified interface in <sanitizer/allocator_interface.h>.
llvm-svn: 215469
|
|
|
|
| |
llvm-svn: 215000
|
|
|
|
|
|
|
|
|
|
| |
Vector clocks is the most actively allocated object in tsan runtime.
Current internal allocator is not scalable enough to handle allocation
of clocks in scalable way (too small caches). This changes transforms
clocks to 2-level array with 512-byte blocks. Since all blocks are of
the same size, it's possible to cache them more efficiently in per-thread caches.
llvm-svn: 214912
|
|
|
|
|
|
|
| |
Suppression context might be used in multiple sanitizers working
simultaneously (e.g. LSan and UBSan) and not knowing about each other.
llvm-svn: 214831
|
|
|
|
|
|
|
| |
Fixes build failure on an old system:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-centos-6.5/builds/7555/steps/build/logs/stdio
llvm-svn: 214394
|
|
|
|
|
|
| |
Remove corresponding bits from LSan and TSan runtimes. No functionality change.
llvm-svn: 214344
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 214343
|
|
|
|
|
|
|
|
|
|
| |
sanitizer_common.
Convert TSan and LSan to the new interface. More changes will follow:
1) "suppressions" should become a common runtime flag.
2) Code for parsing suppressions file should be moved to SuppressionContext::Init().
llvm-svn: 214334
|
|
|
|
| |
llvm-svn: 214082
|
|
|
|
|
|
| |
see the comment for justification
llvm-svn: 214030
|
|
|
|
|
|
|
|
|
|
|
| |
Get rid of Symbolizer::Init(path_to_external) in favor of
thread-safe Symbolizer::GetOrInit(), and use the latter version
everywhere. Implicitly depend on the value of external_symbolizer_path
runtime flag instead of passing it around manually.
No functionality change.
llvm-svn: 214005
|
|
|
|
|
|
| |
Now that it become faster, it's OK to query it every 100ms again.
llvm-svn: 213943
|
|
|
|
|
|
|
|
| |
It is currently broken because it reads a wrong value from profile (heap instead of total).
Also make it faster by reading /proc/self/statm. Reading of /proc/self/smaps
can consume more than 50% of time on beefy apps if done every 100ms.
llvm-svn: 213942
|
|
|
|
| |
llvm-svn: 213791
|
|
|
|
| |
llvm-svn: 213384
|
|
|
|
| |
llvm-svn: 213382
|
|
|
|
|
|
| |
There is now a more common functionality in the form of called_from_lib suppressions.
llvm-svn: 213057
|
|
|
|
|
|
| |
There are no known usages anymore, so one less thing to support.
llvm-svn: 213056
|
|
|
|
| |
llvm-svn: 212749
|
|
|
|
|
|
| |
don't reset s->addr as well
llvm-svn: 212565
|
|
|
|
|
|
| |
They cause "check-tsan" command to hang. Details in r212532 review thread.
llvm-svn: 212562
|