RFR: Merge jdk-17-ga
Jiangli Zhou
jiangli at openjdk.org
Mon Mar 11 19:38:00 UTC 2024
On Fri, 16 Feb 2024 21:43:43 GMT, Jiangli Zhou <jiangli at openjdk.org> wrote:
> This is a redo of https://github.com/openjdk/tsan/pull/16 to address the commits issue. Updated description:
>
> Command: $ git merge --no-ff jdk-17-ga
>
> Most manual merge for conflicts are mechanical.
>
> Additional manual updates:
>
> Add #include "memory/resourceArea.hpp" in src/hotspot/share/tsan/tsanOopMap.cpp to resolve compiler error:
> tsanOopMap.cpp:351:5: error: use of undeclared identifier 'ResourceMark'; did you mean 'ResourceStack'?
> ResourceMark rm;
> ^~~~~~~~~~~~
> ResourceStack
>
> Remove AMD64_ONLY(assert((id_u8 & left_n_bits(17)) == 0, "jmethodID is not aligned");) in classFileParser.cpp. left_n_bits has been removed by https://bugs.openjdk.org/browse/JDK-8178348
>
> Change obj_field_addr_raw<oop>() to field_addr() in java_lang_Class::init_lock_addr in javaClasses.cpp.
>
> Remove ShenandoahTSANWeakRoot::ShenandoahTSANWeakRoot as ShenandoahWeakSerialRoot is removed in shenandoahRootProcessor.cpp.
>
> Remove JVMWrapper calls in tsan related functions in jvm.cpp. The macro has been removed.
>
> Change to use current for JRT_ENTRY(void, SharedRuntime::tsan_interp_method_entry(JavaThread* thread)) as JRT_ENTRY macro expects current, sharedRuntime.cpp.
>
> Change THREAD to current in synchronizer.cpp.
>
> Updated test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c to merge JDK-8272472 change to avoid build failure for testing.
>
> Tested by running hotspot/jtreg/tsan locally:
>
>
> $ bash configure --with-boot-jdk=/usr/local/google/home/jianglizhou/openjdk/jdk-17.0.10 --with-debug-level=release --disable-warnings-as-errors --with-jtreg=/usr/local/google/home/jianglizhou/github/jtreg/build/images/jtreg --with-stdc++lib=static --disable-precompiled-headers --enable-unlimited-crypto --with-native-debug-symbols=internal --with-default-make-target=jdk-image --disable-warnings-as-errors --with-toolchain-type=clang --with-toolchain-path=/usr/local/google/home/jianglizhou/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04 --disable-warnings-as-errors
>
> $ make test TEST=hotspot/jtreg/tsan
>
> Tsan is not fully functional with jdk-17 merge. New runs found more random failures in addition to tsan/NonRacySyncBlockExceptionLoopTest.java. The failed tests appear to be inconsistent, but tsan/NonRacyGarbageCollectionLoopTest.java is more consistently failing. The test failures most likely is because there is no longer serial iterator for the TsanOopMap.
>
> Also built and tested using Clang/LLVM 16.0.6. It appears to be working with jdk-17-ga merge.
Thanks for the careful review!
> Agree that it is better to adapt TsanOopMap in a separate PR. Another reference is https://bugs.openjdk.org/browse/JDK-8235573, which moved `JFR::weak_oops_do` to use OopStorage and support concurrent processing.
>
> Could you update the description to mention that after this merge, TSAN is not yet fully working? This is because `TsanOopMap::weak_oops_do()` is not called anywhere, so TSAN fails to keep track of objects moved by GC.
Done.
>
> A few comments:
>
> 1. In .jcheck/conf, could we use JDK 17's lines for `error=` and `files=`?
Applied.
> 2. In src/hotspot/share/classfile/systemDictionary.cpp, line `assert(calledholdinglock,"must hold lock for notify");` seems an accidental removal of space.
Added space. The line without space was from the jdk-15 version.
> 3. The changes to shenandoahPhaseTimings.hpp, shenandoahRootProcessor.hpp/cpp look unnecessary. It seems to revive removed classes `ShenandoahSerialRoot`, `ShenandoahWeakSerialRoot`, `ShenandoahSerialWeakRoots`, etc, I think we can drop these changes to shenandoah files similarly to dropping the TSAN changes to weakProcessorPhases.cpp and weakProcessorPhases.hpp. They are all related to `TsanOopMap`, and the TSAN-touched Shenandoah classes no longer exist in JDK 17.
Removed.
> 4. In src/hotspot/share/runtime/globals.hpp, there is a missing empty line between the `ThreadSanitizerIgnoreFile` flag and the later `VerifyCrossModifyFence` flag.
Added empty line.
> 5. In src/hotspot/share/runtime/synchronizer.cpp for `ObjectSynchronizer::wait()`, the change to `DTRACE_MONITOR_WAIT_PROBE` line seems unnecessary.
Changed `THREAD` to `current` (current is set to THREAD). `THREAD` was from the jdk-15 version.
> 6. The change to test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c seems a backport of https://bugs.openjdk.org/browse/JDK-8272472. Perhaps mention this in description?
Done.
-------------
PR Comment: https://git.openjdk.org/tsan/pull/17#issuecomment-1970108782
More information about the tsan-dev
mailing list