[llvm-dev] Using TSAN along with custom llvm IR pass
Nischai Vinesh via llvm-dev
llvm-dev at lists.llvm.org
Mon Jul 10 04:06:25 PDT 2017
I think the code is not getting instrumented with tsan at all. In the 'step
3', when I instrument it using 'opt -tsan ...', it gives a warning
"WARNING: You're attempting to print out a bitcode file." I guess this
method doesn't instrument the code.
Is there any other way I can instrument the code with tsan?
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
> > Hello,
> > I tried that as well but there are no tsan warnings thrown at run time,
> > 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
> > from step 2
> > 4. Using the llvm backend compiler, 'llc', compiled the program to
> > assembly
> > 5. The output from step 4 is compiled again with 'clang
> > (linking tsan here) for the final object file.
> > Executing this final output file works fine, except that it doesn't
> > 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_*
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev