[llvm-dev] Using TSAN along with custom llvm IR pass

Nischai Vinesh via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 11 06:26:20 PDT 2017


Hi Dmitry,

I managed to get the program instrumented with tsan using 'opt -tsan ..', 
but still it is not printing tsan warnings when I run the binary. When I 
instrument the same program with tsan during compilation using 'clang 
-fsanitize=thread ...', without instrumenting my IR pass, it does give out 
tsan warnings!


On Monday, July 10, 2017 at 7:21:28 AM UTC+2, Dmitry Vyukov wrote:
>
> On Sun, Jul 9, 2017 at 3:50 PM, Nischai Vinesh <nischai... at gmail.com 
> <javascript:>> wrote: 
> > Hello, 
> > 
> > I tried that as well but there are no tsan warnings thrown at run time, 
> even 
> > though there are data race error! 
> > 
> > The steps I followed: 
> > 1. Generate bitcode using 'clang -emit-llvm' command 
> > 2. Using the 'opt -load ..' command, I instrumented the bitcode file 
> with my 
> > custom pass 
> > 3. Using the command 'opt -tsan ..', instrumented the output bitcode 
> file 
> > from step 2 
> > 4. Using the llvm backend compiler, 'llc', compiled the program to 
> native 
> > assembly 
> > 5. The output from step 4 is compiled again with 'clang 
> -fsanitize=thread' 
> > (linking tsan here) for the final object file. 
> > 
> > Executing this final output file works fine, except that it doesn't 
> throws 
> > any TSAN warnings! 
>
>
> Hi Nischai, 
>
> I see 3 possibilities: 
> 1. Either the code is somehow ends up being non-instrumented, or 
> 2. tsan does not consider what it sees a data race, or 
> 3. the data race is masked by unrelated synchronization. 
>
> For 1 you can check that the resulting code in fact contains __tsan_* 
> callbacks. 
> For 2 and 3 you can rebuilt tsan runtime with TSAN_DEBUG_OUTPUT=2 
> define, then it will print everything it sees (memory accesses and 
> synchronization). This output will allow us to figure out why it does 
> not report a race. 
>

So I guess we can rule out the 1st possibility. Can you kindly tell me how 
to rebuild tsan runtime? Sorry, I am new to LLVM and stuff.



 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170711/46e45cc2/attachment.html>


More information about the llvm-dev mailing list