Commit Graph

473 Commits

Author SHA1 Message Date
Evgeniy Stepanov 233455cba8 [sanitizer] Intercept strerror and strerror_r.
llvm-svn: 187978
2013-08-08 11:44:05 +00:00
Alexander Potapenko ce32410097 [TSan] Let the users suppress use-after-free errors using the "race:" suppressions.
If there's a race between a memory access and a free() call in the client program,
it can be reported as a use-after-free (if the access occurs after the free()) or an ordinary race
(if free() occurs after the access).
We've decided to use a single "race:" prefix for both cases instead of introducing a "use-after-free:" one,
because in many cases this allows us to keep a single suppression for both the use-after-free and free-after-use.

This may be misleading if the use-after-free occurs in a non-racy way (e.g. in a single-threaded program).
But normally such bugs shall not be suppressed.

llvm-svn: 187885
2013-08-07 12:39:00 +00:00
Evgeniy Stepanov 04b7bff1fe [sanitizer] Intercept sched_getaffinity.
Re-applying with a more reliable test case.

llvm-svn: 187876
2013-08-07 09:10:16 +00:00
David Blaikie 787e2b6499 Revert "[sanitizer] Intercept sched_getaffinity."
This reverts commit r187788.

The test case is unreliable (as the test may be run in a situation in
which it has no affinity with cpu0). This can be recommitted with a more
reliable test - possibly using CPU_COUNT != 0 instead (I wasn't entirely
sure that a process was guaranteed to have at least one affinity, though
it seems reasonable, or I'd have made the change myself).

llvm-svn: 187841
2013-08-07 00:37:26 +00:00
Evgeniy Stepanov 9f05e5e533 [sanitizer] Intercept sched_getaffinity.
llvm-svn: 187788
2013-08-06 09:29:01 +00:00
Evgeniy Stepanov da9fd25603 [msan] Intercept confstr.
llvm-svn: 187412
2013-07-30 12:46:59 +00:00
Dmitry Vyukov e9c456e15f tsan: treat SIGSYS as synchronous signal
It is required for chromium sandboxing code.
From the description it seems to be indeed synchronous -- called back on syscall with incorrect arguments,
but seems to be unused in practice. So this should be fine.

llvm-svn: 186579
2013-07-18 13:14:11 +00:00
Dmitry Vyukov c2e4e95580 tsan: disable one more interceptor that causes recursion
llvm-svn: 186497
2013-07-17 07:10:47 +00:00
Alexey Samsonov 9916aa2d95 [Sanitizer] move strcpy and strncpy to common interceptors
llvm-svn: 186408
2013-07-16 12:51:53 +00:00
Dmitry Vyukov 1a0c76fa55 tsan: support sigsuspend() call
Intercepting it makes it process pending signal before return.

llvm-svn: 186400
2013-07-16 11:28:04 +00:00
Evgeniy Stepanov faba61a7bc [sanitizer] Support GLOB_ALTDIRFUNC in glob interceptor.
llvm-svn: 185932
2013-07-09 12:07:59 +00:00
Evgeniy Stepanov 77ef78a0a5 [sanitizer] Intercept realpath and canonicalize_file_name.
Handle realpath(path, NULL) form.

llvm-svn: 185921
2013-07-09 09:53:37 +00:00
Evgeniy Stepanov 717e0cd2a7 [sanitizer] Intercept tcgetattr.
llvm-svn: 185626
2013-07-04 14:03:31 +00:00
Evgeniy Stepanov db615c186f [sanitizer] More interceptors.
bcopy
strtoimax, strtoumax
mbstowcs, mbsrtowcs, mbsnrtowcs
wcstombs, wcsrtombs, wcsnrtombs

llvm-svn: 185624
2013-07-04 13:19:41 +00:00
Evgeniy Stepanov 165d759a6a [sanitizer] Intercept mbtowc, mbrtowc, get_current_dir_name.
Move getcwd to common interceptors.

llvm-svn: 185424
2013-07-02 13:34:44 +00:00
Evgeniy Stepanov 1df4dfe87a [sanitizer] Intercept setlocale.
llvm-svn: 185416
2013-07-02 09:23:45 +00:00
Evgeniy Stepanov 8a4e24ea8b [sanitizer] Intercept getnameinfo.
llvm-svn: 185338
2013-07-01 13:51:31 +00:00
Alexey Samsonov 8918140809 Hide mlock/munlock info message under verbosity flag.
llvm-svn: 185314
2013-07-01 08:25:29 +00:00
Richard Smith 079fe209f5 Fix typo found by Clang fix for extern "C" function handling.
llvm-svn: 185234
2013-06-28 22:28:37 +00:00
Evgeniy Stepanov dec0f76c14 [sanitizer] Intercept ptrace.
llvm-svn: 185142
2013-06-28 11:02:43 +00:00
Dmitry Vyukov d2cd2d018f tsan: revert dynamic symbols file to the old incorrect one
full proper list of dynamic symbols crashes old gold (see bug 16468).
the culprit is 'memcpy' function, if it's added to syms file, gold crashes

llvm-svn: 185078
2013-06-27 13:56:37 +00:00
Dmitry Vyukov b7c6f49364 tsan: remove non-existent functions from syms file
llvm-svn: 185077
2013-06-27 13:52:50 +00:00
Sergey Matveev 0b2ffe30e4 [tsan] Fix build.
llvm-svn: 184963
2013-06-26 16:49:34 +00:00
Sergey Matveev d109eb052b [tsan] Move some suppressions-related code to common.
Factor out code to be reused in LSan. Also switch from linked list to vector.

llvm-svn: 184957
2013-06-26 15:37:14 +00:00
Evgeniy Stepanov 06d6c25141 [sanitizer] readdir and readdir_r interceptors.
llvm-svn: 184950
2013-06-26 15:00:53 +00:00
Dmitry Vyukov eb95448245 tsan: add missing __attribute__((visibility("default"))) to interface functions
llvm-svn: 184858
2013-06-25 15:36:25 +00:00
Dmitry Vyukov b4711b2c24 tsan: update dynamic export syms file
now it includes proper functions (including interceptors)
and does not include local functions that lead to build failures

llvm-svn: 184747
2013-06-24 15:17:36 +00:00
Evgeniy Stepanov 60d964d4f2 [sanitizer] Intercept sysinfo.
llvm-svn: 184739
2013-06-24 14:25:33 +00:00
Evgeniy Stepanov 8fb2c264a2 [sanitizer] Fix TSan build.
llvm-svn: 184736
2013-06-24 14:03:13 +00:00
Evgeniy Stepanov 0e8053af08 [sanitizer] Intercept readv, preadv, writev, pwritev.
llvm-svn: 184717
2013-06-24 10:43:23 +00:00
Dmitry Vyukov 03ec9545f5 tsan: fix potential false positive race on fd
llvm-svn: 184430
2013-06-20 14:32:12 +00:00
Dmitry Vyukov 5cf581a8d4 tsan: consistently use return pc as top frame pc
always substract 1 from the top pc
this allows to get correct stacks with -O2

llvm-svn: 184112
2013-06-17 19:57:03 +00:00
Alexey Samsonov 0d7012debb [TSan] use InternalMmapVector to store fired suppressions
llvm-svn: 183974
2013-06-14 11:18:58 +00:00
Dmitry Vyukov 26daccaddb tsan: fix Windows Go crash
llvm-svn: 183898
2013-06-13 10:15:44 +00:00
Dmitry Vyukov a8570d38fe tsan: add -Wno-maybe-uninitialized to Go build script
this is how the rest of the codebase is built

llvm-svn: 183738
2013-06-11 11:44:43 +00:00
Dmitry Vyukov 315bb0e687 tsan: allows to suppress races on global variables
llvm-svn: 183672
2013-06-10 15:38:44 +00:00
Dmitry Vyukov b19a26b852 tsan: disable getaddrinfo() interceptor for tsan (causes recursion)
llvm-svn: 183649
2013-06-10 11:35:08 +00:00
Dmitry Vyukov ddb0294dd8 tsan: fix old gcc warnings
llvm-svn: 183645
2013-06-10 10:30:19 +00:00
Dmitry Vyukov 8794772337 tsan: more detailed trace for atomic operations (include address and memory ordering)
llvm-svn: 183643
2013-06-10 10:01:31 +00:00
Evgeniy Stepanov 0b1f41b6f4 [sanitizer] ioctl interceptor.
ASan: disabled by default
MSan: enabled by default
TSan: disabled
llvm-svn: 183517
2013-06-07 13:00:47 +00:00
Dmitry Vyukov 0fffc0088c tsan: use memory access size for Go after all
helps to make range access functions correct and fast

llvm-svn: 183418
2013-06-06 14:31:15 +00:00
Dmitry Vyukov 5fe8a4f88f tsan: always strip bottom frame in Go reports
llvm-svn: 183408
2013-06-06 13:31:35 +00:00
Evgeniy Stepanov 56050e8f69 [sanitizer] Fix __sanitizer_unaligned_* to work with unaligned data types.
llvm-svn: 183224
2013-06-04 13:49:10 +00:00
Evgeniy Stepanov fc708db4c1 [sanitizer] Intercept getpeername.
llvm-svn: 182844
2013-05-29 11:49:25 +00:00
Evgeniy Stepanov a4d08c4e87 [sanitizer] Move TSan and MSan recvmsg interceptors to common.
llvm-svn: 182843
2013-05-29 11:30:00 +00:00
Dmitry Vyukov 2b997d2914 tsan: match "race" suppressions against "race on vptr" reports
llvm-svn: 182842
2013-05-29 11:23:54 +00:00
Evgeniy Stepanov f28217ad0e [sanitizer] modf/modff/modfl interceptors.
llvm-svn: 182838
2013-05-29 10:03:11 +00:00
Alexey Samsonov c30e2d6b3a Make InternalAlloc/InternalFree in sanitizer runtimes libc-free by switching to a custom allocator.
llvm-svn: 182836
2013-05-29 09:15:39 +00:00
Evgeniy Stepanov 08f662845d [sanitizer] Share TSan accept & accept4 interceptors with other sanitizers.
llvm-svn: 182835
2013-05-29 09:09:58 +00:00
Evgeniy Stepanov bfbd37e6e7 [tsan] Remove -Wgnu from Makefile.old.
llvm-svn: 182580
2013-05-23 11:57:47 +00:00