From jeremy.coulon.jrmc at gmail.com Fri Sep 18 13:39:10 2020 From: jeremy.coulon.jrmc at gmail.com (=?UTF-8?B?SsOpcsOpbXkgQ291bG9u?=) Date: Fri, 18 Sep 2020 15:39:10 +0200 Subject: data race in java.lang.ClassLoader.loadClass Message-ID: Hello I would love to use TSan in my project that uses both Java and C++ code (via JNI). openjdk-tsan looks the perfect solution but I wonder if it is advanced enough to give me useful results. I built openjdk-tsan with gcc9. Currently I have a lot of reports from the JVM itself. For example, TSan says I have a data race in java.lang.ClassLoader.loadClass(): > ================== > WARNING: ThreadSanitizer: data race (pid=358045) > Read of size 4 at 0x0005cf6fe900 by thread T24 (mutexes: write > M1068479037050653848, write M699465342575271728, write M210543308024232960, > write M226868856673487656, write M289074826522627400, write > M469218811642843152, write M236439005409773704, write M331748, write > M848084129784262448): > #0 java.nio.Buffer.position()I Buffer.java:291 > #1 java.util.zip.Inflater.inflate([BII)I Inflater.java:386 > #2 java.util.zip.InflaterInputStream.read([BII)I > InflaterInputStream.java:152 > #3 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > #4 > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class; > BuiltinClassLoader.java:822 > #5 > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; > BuiltinClassLoader.java:723 > #6 > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; > BuiltinClassLoader.java:646 > #7 > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > BuiltinClassLoader.java:604 > #8 > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > ClassLoaders.java:178 > #9 > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > ClassLoader.java:523 > #10 (Generated Stub) > Previous write of size 4 at 0x0005cf6fe900 by thread T25 (mutexes: write > M1144758755745824288, write M1145040230722535312, write > M1144758755722805080, write M1145040230699515824, write > M1144758755745928632, write M1145040230722639376, write M24769823420602496, > write M19025): > #0 java.nio.Buffer.position(I)Ljava/nio/Buffer; Buffer.java:310 > #1 java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer; > ByteBuffer.java:1309 > #2 java.util.zip.Inflater.inflate([BII)I Inflater.java:427 > #3 java.util.zip.InflaterInputStream.read([BII)I > InflaterInputStream.java:152 > #4 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > #5 > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class; > BuiltinClassLoader.java:822 > #6 > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; > BuiltinClassLoader.java:723 > #7 > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; > BuiltinClassLoader.java:646 > #8 > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > BuiltinClassLoader.java:604 > #9 > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > ClassLoaders.java:178 > #10 > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > ClassLoader.java:523 > #11 (Generated Stub) > Mutex M1068479037050653848 is already destroyed. > Mutex M699465342575271728 is already destroyed. > Mutex M210543308024232960 is already destroyed. > Mutex M226868856673487656 is already destroyed. > Mutex M289074826522627400 is already destroyed. > Mutex M469218811642843152 is already destroyed. > Mutex M236439005409773704 is already destroyed. > Mutex M331748 (0x0005df799308) created at: #0 __tsan_java_mutex_lock (libtsan.so.0+0x851b7) #1 SharedRuntime::tsan_oop_lock(Thread*, oop) > /data/Jenkins-Slave/workspace/3rd-party_openjdk_develop/.conan/data/openjdk/15.0.0-internal+5b22e18/user/testing/build/5fb562640607222bbb71a57209d2cb3e8de8666a/openjdk/src/hotspot/share/runtime/sharedRuntime.cpp:1068 > (libjvm.so+0x154fbe3) #2 > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > BuiltinClassLoader.java:604 #3 > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > ClassLoaders.java:178 #4 > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > ClassLoader.java:523 #5 (Generated Stub) Mutex M848084129784262448 is already destroyed. > Mutex M1144758755745824288 is already destroyed. > Mutex M1145040230722535312 is already destroyed. > Mutex M1144758755722805080 is already destroyed. > Mutex M1145040230699515824 is already destroyed. > Mutex M1144758755745928632 is already destroyed. > Mutex M1145040230722639376 is already destroyed. > Mutex M24769823420602496 is already destroyed. > > Mutex M19025 (0x0005cf705290) created at: > #0 __tsan_java_mutex_lock (libtsan.so.0+0x851b7) > #1 SharedRuntime::tsan_oop_lock(Thread*, oop) > /data/Jenkins-Slave/workspace/3rd-party_openjdk_develop/.conan/data/openjdk/15.0.0-internal+5b22e18/exalead/testing/build/5fb562640607222bbb71a57209d2cb3e8de8666a/openjdk/src/hotspot/share/runtime/sharedRuntime.cpp:1068 > (libjvm.so+0x154fbe3) > #2 java.util.zip.InflaterInputStream.read([BII)I > InflaterInputStream.java:152 > #3 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > #4 > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class; > BuiltinClassLoader.java:822 > #5 > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; > BuiltinClassLoader.java:723 > #6 > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; > BuiltinClassLoader.java:646 > #7 > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > BuiltinClassLoader.java:604 > #8 > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > ClassLoaders.java:178 > #9 > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > ClassLoader.java:523 > #10 (Generated Stub) > SUMMARY: ThreadSanitizer: data race Buffer.java:291 in > java.nio.Buffer.position()I I suspect that some libraries packaged in the JDK are not instrumented (eg. libzip.so). I also have reports from stuff in java.util.concurrent. For example AbstractOwnableSynchronizer or AbstractQueuedSynchronizer. Any help on whether this is expected behavior would be nice. J?r?my From manc at google.com Sat Sep 19 02:56:30 2020 From: manc at google.com (Man Cao) Date: Fri, 18 Sep 2020 19:56:30 -0700 Subject: data race in java.lang.ClassLoader.loadClass In-Reply-To: References: Message-ID: Hi J?r?my, Thanks for the interests. Yes, there are a lot of intentional and real races in the JDK itself. And internally Google has a list of suppressed races. We plan to publish the list in the Github repo, but have not got the time to do it yet. In the meantime, you could add some basic suppresions according to https://github.com/google/sanitizers/wiki/ThreadSanitizerSuppressions With suppression like: called_from_lib:/libjvm.so called_from_lib:/libzip.so called_from_lib:/libverify.so called_from_lib:/libjimage.so race:^java.util.concurrent.ConcurrentHashMap race:^java.util.concurrent.locks.ReentrantReadWriteLock race:^java.util.concurrent.locks.ReentrantLock race:^java.lang.ref.SoftReference.get -Man On Fri, Sep 18, 2020 at 6:39 AM J?r?my Coulon wrote: > Hello > > I would love to use TSan in my project that uses both Java and C++ code > (via JNI). > openjdk-tsan looks the perfect solution but I wonder if it is advanced > enough to give me useful results. > > I built openjdk-tsan with gcc9. Currently I have a lot of reports from the > JVM itself. > > For example, TSan says I have a data race > in java.lang.ClassLoader.loadClass(): > > > ================== > > WARNING: ThreadSanitizer: data race (pid=358045) > > Read of size 4 at 0x0005cf6fe900 by thread T24 (mutexes: write > > M1068479037050653848, write M699465342575271728, write > M210543308024232960, > > write M226868856673487656, write M289074826522627400, write > > M469218811642843152, write M236439005409773704, write M331748, write > > M848084129784262448): > > #0 java.nio.Buffer.position()I Buffer.java:291 > > #1 java.util.zip.Inflater.inflate([BII)I Inflater.java:386 > > #2 java.util.zip.InflaterInputStream.read([BII)I > > InflaterInputStream.java:152 > > #3 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > > #4 > > > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class; > > BuiltinClassLoader.java:822 > > #5 > > > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; > > BuiltinClassLoader.java:723 > > #6 > > > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:646 > > #7 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:604 > > #8 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #9 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #10 (Generated Stub) > > > > > Previous write of size 4 at 0x0005cf6fe900 by thread T25 (mutexes: write > > M1144758755745824288, write M1145040230722535312, write > > M1144758755722805080, write M1145040230699515824, write > > M1144758755745928632, write M1145040230722639376, write > M24769823420602496, > > write M19025): > > #0 java.nio.Buffer.position(I)Ljava/nio/Buffer; Buffer.java:310 > > #1 java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer; > > ByteBuffer.java:1309 > > #2 java.util.zip.Inflater.inflate([BII)I Inflater.java:427 > > #3 java.util.zip.InflaterInputStream.read([BII)I > > InflaterInputStream.java:152 > > #4 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > > #5 > > > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class; > > BuiltinClassLoader.java:822 > > #6 > > > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; > > BuiltinClassLoader.java:723 > > #7 > > > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:646 > > #8 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:604 > > #9 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #10 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #11 (Generated Stub) > > > > > Mutex M1068479037050653848 is already destroyed. > > Mutex M699465342575271728 is already destroyed. > > Mutex M210543308024232960 is already destroyed. > > Mutex M226868856673487656 is already destroyed. > > Mutex M289074826522627400 is already destroyed. > > Mutex M469218811642843152 is already destroyed. > > Mutex M236439005409773704 is already destroyed. > > > > > Mutex M331748 (0x0005df799308) created at: > > #0 __tsan_java_mutex_lock (libtsan.so.0+0x851b7) > > #1 SharedRuntime::tsan_oop_lock(Thread*, oop) > > > /data/Jenkins-Slave/workspace/3rd-party_openjdk_develop/.conan/data/openjdk/15.0.0-internal+5b22e18/user/testing/build/5fb562640607222bbb71a57209d2cb3e8de8666a/openjdk/src/hotspot/share/runtime/sharedRuntime.cpp:1068 > > (libjvm.so+0x154fbe3) > > #2 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:604 > > #3 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #4 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #5 (Generated Stub) > > > > Mutex M848084129784262448 is already destroyed. > > Mutex M1144758755745824288 is already destroyed. > > Mutex M1145040230722535312 is already destroyed. > > Mutex M1144758755722805080 is already destroyed. > > Mutex M1145040230699515824 is already destroyed. > > Mutex M1144758755745928632 is already destroyed. > > Mutex M1145040230722639376 is already destroyed. > > Mutex M24769823420602496 is already destroyed. > > > > Mutex M19025 (0x0005cf705290) created at: > > #0 __tsan_java_mutex_lock (libtsan.so.0+0x851b7) > > #1 SharedRuntime::tsan_oop_lock(Thread*, oop) > > > /data/Jenkins-Slave/workspace/3rd-party_openjdk_develop/.conan/data/openjdk/15.0.0-internal+5b22e18/exalead/testing/build/5fb562640607222bbb71a57209d2cb3e8de8666a/openjdk/src/hotspot/share/runtime/sharedRuntime.cpp:1068 > > (libjvm.so+0x154fbe3) > > #2 java.util.zip.InflaterInputStream.read([BII)I > > InflaterInputStream.java:152 > > #3 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > > #4 > > > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;Ljdk/internal/loader/Resource;)Ljava/lang/Class; > > BuiltinClassLoader.java:822 > > #5 > > > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljava/lang/String;)Ljava/lang/Class; > > BuiltinClassLoader.java:723 > > #6 > > > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/String;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:646 > > #7 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:604 > > #8 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/String;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #9 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #10 (Generated Stub) > > > > > SUMMARY: ThreadSanitizer: data race Buffer.java:291 in > > java.nio.Buffer.position()I > > > I suspect that some libraries packaged in the JDK are not instrumented (eg. > libzip.so). > > I also have reports from stuff in java.util.concurrent. For example > AbstractOwnableSynchronizer or AbstractQueuedSynchronizer. > > Any help on whether this is expected behavior would be nice. > > J?r?my > From Jie.He at arm.com Mon Sep 21 01:57:19 2020 From: Jie.He at arm.com (Jie He) Date: Mon, 21 Sep 2020 01:57:19 +0000 Subject: data race in java.lang.ClassLoader.loadClass In-Reply-To: References: Message-ID: Thanks Man. I also noticed there are intentional races in Java concurrent API, including ReentrantLock, ConcurrentHashMap etc, when investigating some Java applications. B.R Jie He -----Original Message----- From: tsan-dev On Behalf Of Man Cao Sent: Saturday, September 19, 2020 10:57 AM To: J?r?my Coulon Cc: tsan-dev at openjdk.java.net Subject: Re: data race in java.lang.ClassLoader.loadClass Hi J?r?my, Thanks for the interests. Yes, there are a lot of intentional and real races in the JDK itself. And internally Google has a list of suppressed races. We plan to publish the list in the Github repo, but have not got the time to do it yet. In the meantime, you could add some basic suppresions according to https://github.com/google/sanitizers/wiki/ThreadSanitizerSuppressions With suppression like: called_from_lib:/libjvm.so called_from_lib:/libzip.so called_from_lib:/libverify.so called_from_lib:/libjimage.so race:^java.util.concurrent.ConcurrentHashMap race:^java.util.concurrent.locks.ReentrantReadWriteLock race:^java.util.concurrent.locks.ReentrantLock race:^java.lang.ref.SoftReference.get -Man On Fri, Sep 18, 2020 at 6:39 AM J?r?my Coulon wrote: > Hello > > I would love to use TSan in my project that uses both Java and C++ > code (via JNI). > openjdk-tsan looks the perfect solution but I wonder if it is advanced > enough to give me useful results. > > I built openjdk-tsan with gcc9. Currently I have a lot of reports from > the JVM itself. > > For example, TSan says I have a data race in > java.lang.ClassLoader.loadClass(): > > > ================== > > WARNING: ThreadSanitizer: data race (pid=358045) > > Read of size 4 at 0x0005cf6fe900 by thread T24 (mutexes: write > > M1068479037050653848, write M699465342575271728, write > M210543308024232960, > > write M226868856673487656, write M289074826522627400, write > > M469218811642843152, write M236439005409773704, write M331748, write > > M848084129784262448): > > #0 java.nio.Buffer.position()I Buffer.java:291 > > #1 java.util.zip.Inflater.inflate([BII)I Inflater.java:386 > > #2 java.util.zip.InflaterInputStream.read([BII)I > > InflaterInputStream.java:152 > > #3 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > > #4 > > > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;L > jdk/internal/loader/Resource;)Ljava/lang/Class; > > BuiltinClassLoader.java:822 > > #5 > > > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljav > a/lang/String;)Ljava/lang/Class; > > BuiltinClassLoader.java:723 > > #6 > > > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/Stri > ng;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:646 > > #7 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)L > java/lang/Class; > > BuiltinClassLoader.java:604 > > #8 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/S > tring;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #9 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #10 (Generated Stub) > > > > > Previous write of size 4 at 0x0005cf6fe900 by thread T25 (mutexes: > write > > M1144758755745824288, write M1145040230722535312, write > > M1144758755722805080, write M1145040230699515824, write > > M1144758755745928632, write M1145040230722639376, write > M24769823420602496, > > write M19025): > > #0 java.nio.Buffer.position(I)Ljava/nio/Buffer; Buffer.java:310 > > #1 java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer; > > ByteBuffer.java:1309 > > #2 java.util.zip.Inflater.inflate([BII)I Inflater.java:427 > > #3 java.util.zip.InflaterInputStream.read([BII)I > > InflaterInputStream.java:152 > > #4 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > > #5 > > > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;L > jdk/internal/loader/Resource;)Ljava/lang/Class; > > BuiltinClassLoader.java:822 > > #6 > > > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljav > a/lang/String;)Ljava/lang/Class; > > BuiltinClassLoader.java:723 > > #7 > > > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/Stri > ng;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:646 > > #8 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)L > java/lang/Class; > > BuiltinClassLoader.java:604 > > #9 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/S > tring;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #10 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #11 (Generated Stub) > > > > > Mutex M1068479037050653848 is already destroyed. > > Mutex M699465342575271728 is already destroyed. > > Mutex M210543308024232960 is already destroyed. > > Mutex M226868856673487656 is already destroyed. > > Mutex M289074826522627400 is already destroyed. > > Mutex M469218811642843152 is already destroyed. > > Mutex M236439005409773704 is already destroyed. > > > > > Mutex M331748 (0x0005df799308) created at: > > #0 __tsan_java_mutex_lock (libtsan.so.0+0x851b7) > > #1 SharedRuntime::tsan_oop_lock(Thread*, oop) > > > /data/Jenkins-Slave/workspace/3rd-party_openjdk_develop/.conan/data/op > enjdk/15.0.0-internal+5b22e18/user/testing/build/5fb562640607222bbb71a > 57209d2cb3e8de8666a/openjdk/src/hotspot/share/runtime/sharedRuntime.cp > p:1068 > > (libjvm.so+0x154fbe3) > > #2 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)L > java/lang/Class; > > BuiltinClassLoader.java:604 > > #3 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/S > tring;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #4 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #5 (Generated Stub) > > > > Mutex M848084129784262448 is already destroyed. > > Mutex M1144758755745824288 is already destroyed. > > Mutex M1145040230722535312 is already destroyed. > > Mutex M1144758755722805080 is already destroyed. > > Mutex M1145040230699515824 is already destroyed. > > Mutex M1144758755745928632 is already destroyed. > > Mutex M1145040230722639376 is already destroyed. > > Mutex M24769823420602496 is already destroyed. > > > > Mutex M19025 (0x0005cf705290) created at: > > #0 __tsan_java_mutex_lock (libtsan.so.0+0x851b7) > > #1 SharedRuntime::tsan_oop_lock(Thread*, oop) > > > /data/Jenkins-Slave/workspace/3rd-party_openjdk_develop/.conan/data/op > enjdk/15.0.0-internal+5b22e18/exalead/testing/build/5fb562640607222bbb > 71a57209d2cb3e8de8666a/openjdk/src/hotspot/share/runtime/sharedRuntime > .cpp:1068 > > (libjvm.so+0x154fbe3) > > #2 java.util.zip.InflaterInputStream.read([BII)I > > InflaterInputStream.java:152 > > #3 jdk.internal.loader.Resource.getBytes()[B Resource.java:126 > > #4 > > > jdk.internal.loader.BuiltinClassLoader.defineClass(Ljava/lang/String;L > jdk/internal/loader/Resource;)Ljava/lang/Class; > > BuiltinClassLoader.java:822 > > #5 > > > jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Ljav > a/lang/String;)Ljava/lang/Class; > > BuiltinClassLoader.java:723 > > #6 > > > jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Ljava/lang/Stri > ng;Z)Ljava/lang/Class; > > BuiltinClassLoader.java:646 > > #7 > > > jdk.internal.loader.BuiltinClassLoader.loadClass(Ljava/lang/String;Z)L > java/lang/Class; > > BuiltinClassLoader.java:604 > > #8 > > > jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Ljava/lang/S > tring;Z)Ljava/lang/Class; > > ClassLoaders.java:178 > > #9 > > java.lang.ClassLoader.loadClass(Ljava/lang/String;)Ljava/lang/Class; > > ClassLoader.java:523 > > #10 (Generated Stub) > > > > > SUMMARY: ThreadSanitizer: data race Buffer.java:291 in > > java.nio.Buffer.position()I > > > I suspect that some libraries packaged in the JDK are not instrumented (eg. > libzip.so). > > I also have reports from stuff in java.util.concurrent. For example > AbstractOwnableSynchronizer or AbstractQueuedSynchronizer. > > Any help on whether this is expected behavior would be nice. > > J?r?my > IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.