Dmitry Vyukov
4e3b9802bd
tsan: return the old fake numbers from malloc stats (some code already depends on them)
...
llvm-svn: 173348
2013-01-24 14:07:19 +00:00
Dmitry Vyukov
6e406cda4b
tsan: implement malloc stats querying
...
llvm-svn: 173332
2013-01-24 09:08:03 +00:00
Dmitry Vyukov
228921d71e
tsan: add stubs for malloc introspection (similar to what we have in asan)
...
llvm-svn: 173255
2013-01-23 12:08:03 +00:00
Dmitry Vyukov
c1a1517a37
tsan: describe stack and TLS addresses
...
llvm-svn: 172393
2013-01-14 10:00:03 +00:00
Dmitry Vyukov
a681c01b69
tsan: fix crash when user defines own fopen/fileno
...
llvm-svn: 171967
2013-01-09 11:54:52 +00:00
Dmitry Vyukov
774defc649
tsan: fix the code that searches for heap memory block metadata
...
(the old code won't work with new allocator)
llvm-svn: 171054
2012-12-25 07:45:40 +00:00
Dmitry Vyukov
fd5ebcd1b0
tsan: add mutexsets to reports
...
With this change reports say what mutexes the threads hold around the racy memory accesses.
llvm-svn: 169493
2012-12-06 12:16:15 +00:00
Dmitry Vyukov
90c9cbfed4
tsan: cache pc's that cause suppressions (this way we do not need to symbolize the reports)
...
llvm-svn: 165317
2012-10-05 15:51:32 +00:00
Alexey Samsonov
313014694f
[TSan] Provide replacements for operators new/delete instead of declaring extern C functions with weirdly mangled names (same strategy is used in ASan).
...
llvm-svn: 164487
2012-09-24 13:19:47 +00:00
Dmitry Vyukov
318f77749e
tsan: add "as if synchronized via sleep" feature
...
llvm-svn: 163006
2012-08-31 17:27:49 +00:00
Dmitry Vyukov
191f2f7cdb
tsan: use stack depot to describe heap blocks
...
llvm-svn: 162902
2012-08-30 13:02:30 +00:00
Dmitry Vyukov
1c0b3c6b84
tsan: store sync objects in memory block headers + delete them when the block is freed
...
llvm-svn: 161959
2012-08-15 17:27:20 +00:00
Dmitry Vyukov
954fc8c3e4
tsan: switch to new allocator
...
llvm-svn: 161953
2012-08-15 15:35:15 +00:00
Dmitry Vyukov
ec64f3e738
tsan: remove internal allocator, switch to sanitizer_common one.
...
llvm-svn: 159141
2012-06-25 15:03:15 +00:00
Dmitry Vyukov
de1fd1c83b
tsan: do not call malloc/free in memory access handling routine.
...
This improves signal-/fork-safety of instrumented programs.
llvm-svn: 158988
2012-06-22 11:08:55 +00:00
Alexey Samsonov
91e1a7eb17
[Sanitizer] move internal_strdup and internal_memcpy to common runtime. Make internal allocations from TSan runtime call InternalAlloc from common runtime
...
llvm-svn: 158148
2012-06-07 11:54:08 +00:00
Alexey Samsonov
51ae983718
[Sanitizer]: Introduce a common internal printf function. For now, also use tool-specific wrappers TsanPrintf (its output is controlled by TSan flags) and AsanPrintf (which copies its results to the ASan-private buffer). Supported formats: %[z]{d,u,x}, %s, %p. Re-write all format strings in TSan according to this format (this should have no effect on 64-bit platforms).
...
llvm-svn: 158065
2012-06-06 13:11:29 +00:00
Alexey Samsonov
ac4c290d02
[TSan] run some renaming as a preparation for factoring out Printf implementation.
...
llvm-svn: 158058
2012-06-06 10:13:27 +00:00
Alexey Samsonov
3b2f9f4c98
Remove file-type tags in .cc files in tsan/ and sanitizer_common/
...
llvm-svn: 157928
2012-06-04 13:55:19 +00:00
Dmitry Vyukov
9d2229f3ca
tsan: add more checks for OOM conditions
...
tests like to try to malloc((size_t)-1)
llvm-svn: 157176
2012-05-21 06:46:27 +00:00
Dmitry Vyukov
f64046cb3d
tsan: check for overflow in malloc()
...
llvm-svn: 157048
2012-05-18 09:41:52 +00:00
Dmitry Vyukov
19b855fe3e
tsan: remove shutdown code
...
tsan runtime shutdown is problematic for 2 reasons:
1. others crash during shutdown
2. we have to override user exit status (don't know it and can't return from atexit handler)
llvm-svn: 156991
2012-05-17 15:00:27 +00:00
Dmitry Vyukov
665ce2a2f4
tsan: enabled report suppression for signal-unsafe reports
...
llvm-svn: 156765
2012-05-14 15:28:03 +00:00
Kostya Serebryany
4ad375f0a9
[tsan] First commit of ThreadSanitizer (TSan) run-time library.
...
Algorithm description: http://code.google.com/p/thread-sanitizer/wiki/ThreadSanitizerAlgorithm
Status:
The tool is known to work on large real-life applications, but still has quite a few rough edges.
Nothing is guaranteed yet.
The tool works on x86_64 Linux.
Support for 64-bit MacOS 10.7+ is planned for late 2012.
Support for 32-bit OSes is doable, but problematic and not yet planed.
Further commits coming:
- tests
- makefiles
- documentation
- clang driver patch
The code was previously developed at http://code.google.com/p/data-race-test/source/browse/trunk/v2/
by Dmitry Vyukov and Kostya Serebryany with contributions from
Timur Iskhodzhanov, Alexander Potapenko, Alexey Samsonov and Evgeniy Stepanov.
llvm-svn: 156542
2012-05-10 13:48:04 +00:00