• Home
    • View
    • Login
    This page
    • Normal
    • Export PDF
    • Page Information

    Loading...
  1. Dashboard
  2. Undefined Space
  3. Tsan
  4. Main

Page History

Versions Compared

Old Version 14

changes.mady.by.user Arthur Eubanks

Saved on Jul 22, 2019

compared with

New Version 15

changes.mady.by.user Arthur Eubanks

Saved on Jul 29, 2019

  • Previous Change: Difference between versions 13 and 14
  • Next Change: Difference between versions 15 and 16
  • View Page History

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Welcome to the TSAN Project!

The goal of this Project is to explore and incubate a Thread SANitizer (TSAN) feature that could be integrated into the HotSpot JVM and the JVM Tool Interface (JVM TI).  This includes working, evaluating, and incubating a Thread Sanitizer implementation for Java.


The rest of this page will provide basic information for downloading, building, and testing Java TSAN.

Prerequistes

Java TSAN has only been tested on 64-bit Linux. It may work on other platforms that LLVM TSAN supports with some build changes.

Java TSAN is dependent on the C/C++ ThreadSanitizer implementation for GCC/LLVM. Java TSAN requires a new API for proper symbolization of Java stack traces, which is only available in update-to-date versions of C/C++ ThreadSanitizer. This requires building OpenJDK with LLVM 7.0 or later, or GCC 9 or later. Currently we recommend developers and testers use LLVM 8.0.

Building

Java TSAN implementation is in the "tsan" branch in the Mercurial repository. Developers need to clone this branch:

hg clone --branch tsan http://hg.openjdk.java.net/tsan/dev jdk-tsan


Newer toolchains come with new warnings and the codebase hasn't been cleaned up for those warnings yet, so --disable-warnings-as-errors is needed.

Java TSAN exists as a JVM feature "tsan", which is enabled by default on the "tsan" branch in the repository. It can be disabled with the configure flag "--with-jvm-features=-tsan".

To build OpenJDK with LLVM, pass the configure flags "--with-toolchain-type=clang --with-toolchain-path=<path_to_llvm_root_dir>/bin".

Running

Note: the method of including the TSAN runtime in the JVM is not finalized and could change in the future.

Run Java with TSAN enabled:

./images/jdk/bin/java -XX:+ThreadSanitizer

Testing

The tests for TSAN are at test/hotspot/jtreg/tsan/

make test TEST="hotspot/jtreg/tsan"

Resources

  • TSAN Project
  • TSAN JEP proposal
  • Repositories
  • Mailing list: tsan-dev

Recent space activity

Recently Updated
typespage, comment, blogpost
max5
hideHeadingtrue
themesocial

Space contributors

Contributors
modelist
scopedescendants
limit5
showLastTimetrue
orderupdate


Overview
Content Tools
ThemeBuilder

Terms of Use
• License: GPLv2
• Privacy • Trademarks • Contact Us

Powered by a free Atlassian Confluence Open Source Project License granted to https://www.atlassian.com/software/views/opensource-community-additional-license-offer. Evaluate Confluence today.

  • Kolekti ThemeBuilder Powered by Atlassian Confluence 8.5.21
  • Kolekti ThemeBuilder printed.by.atlassian.confluence
  • Report a bug
  • Atlassian News
Atlassian
Kolekti ThemeBuilder EngineAtlassian Confluence
{"serverDuration": 296, "requestCorrelationId": "4fe8ffe7a2cb6931"}