[llvm-dev] tsan_interface_java.h; any users? reviving https://github.com/google/java-thread-sanitizer?

Jaeheon Yi via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 1 10:51:00 PDT 2017


On Fri, Sep 1, 2017 at 7:14 AM, Jiri Danek <jdanek at redhat.com> wrote:

> On Fri, Sep 1, 2017 at 1:33 AM, Jaeheon Yi <jaeheon at google.com> wrote:
>
>> The interface files you see are for a prototype of Java Tsan that's
>> internal to Google. It's for use by a JDK that we customized with extensive
>> JVM patches, and enables running the Tsan engine on Java and native code
>> simultaneously.
>>
>> We presented this prototype recently at the JVM Language Summit. Here's
>> the talk:
>> https://www.youtube.com/watch?v=UykhZ36W04I
>>
>> We are starting to explore how to upstream the JVM patches. It's going to
>> be tricky: The patches are fairly invasive, the setup and expectations are
>> different in terms of upstream vs. home-grown build system, and the whole
>> thing will require healthy upstream buy-in. This will all take time, so no
>> promises of a speedy release, unfortunately.
>>
>
> I can imagine. Thanks for the info and the talk. I am not holding my
> breath.
>
>
>> Since you seem to be ok with bytecode rewriting (we have reasons for not
>> doing that), I would like to point you to FastTrack, a pure-Java
>> implementation of the Happens-Before race detection algorithm.
>> https://github.com/stephenfreund/RoadRunner
>> (Disclosure) I worked with the tool and the authors in my grad student
>> days.
>> I see it's been updated recently too, so feel free to give it a spin.
>>
>
> Thanks! I did. It seems not to understand Thread Pools. JDK docs say
> "Memory consistency effects: Actions in a thread prior to submitting a
> Runnable object to an Executor happen-before its execution begins, perhaps
> in another thread.", but if I am reading the errors from RoadRunner
> properly, the tool does not see that. Other than that, it seems to work.
>

Check out InstrumentationFilter. I recall we avoided instrumenting JDK
classes (for $reasons; I don't remember), but maybe you can add just the
Executor class you need.

-- 
> Jiří Daněk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170901/406bf950/attachment.html>


More information about the llvm-dev mailing list