[LLVMdev] Unifying TSan blacklist and no_sanitize_thread

Alexey Samsonov vonosmas at gmail.com
Thu May 29 13:41:46 PDT 2014


Hi,

I consider reducing the usage of blacklist in sanitizer instrumentation
passes and doing the necessary work in frontend (Clang) instead.

Some of it is already implemented: e.g. Clang will attach an attribute
"sanitize_address" to function definition only if this function is not
blacklisted. In this case we won't instrument the memory accesses in this
function in ASan instrumentation pass, so there's no need to looking at
blacklist once again.

TSan pass does the following:

1) instruments plain memory accesses
2) instruments atomic accesses
3) instruments memory intrinsics calls.
4) adds function entry/exit callbacks.

If a function doesn't have sanitize_thread attribute (e.g. it was annotated
with __attribute__((no_sanitize_thread)) ), then it still does (2), (3) and
(4). If a function is blacklisted,
TSan pass does nothing. Shouldn't the behavior be the same? I think, we
must always do (4) to get
good stack traces, and probably do (2) (we may report races on atomics in
this case, but otherwise
we may miss synchronization). Thoughts?

-- 
Alexey Samsonov
vonosmas at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140529/a215bbdc/attachment.html>


More information about the llvm-dev mailing list