8222670 patch review: prevent downgraded tasks from recompiling
Tobias Hartmann
tobias.hartmann at oracle.com
Thu May 2 09:04:42 UTC 2019
Hi,
in the bug description you state:
> CompileBroker::compile_method fails to detect the pre-existing nmethod because comp_level doesn't match
But why is that? If a downgraded compilation succeeded at level 2, shouldn't a re-compilation at the
same level be detected by CompileBroker::compilation_is_complete() in CompileBroker::compile_method()?
You need to update the copyright date in Level2RecompilationTest.java (should be 2019 only).
Thanks,
Tobias
On 26.04.19 09:36, Liu, Xin wrote:
> Gently ping.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8222670
> I got the new revision.
> https://cr.openjdk.java.net/~xliu/8222670/webrev.03/
>
> I finish up test Level2RecompilationTest.java. if you want to start a OSR compilation, you have to specify bci which points to the begin of a BB.
> Give them bci = 0 is good enough for general cases.
>
> Thanks,
> --lx
>
>
>
>
> On 4/19/19, 11:19 PM, "Liu, Xin" <xxinliu at amazon.com> wrote:
>
> hi, Severin,
>
> Thanks for reviewing. Yes, it's irrelevant. I revert it. please check it out.
> https://cr.openjdk.java.net/~xliu/8222670/webrev.02/
>
> Please note that I added an assertion InstanceKlass::add_osr_nmethod(nmethod* n) in this webrev.
> In my understanding, it is a potential memleak of codecache. If there's no higher level of osr compilation, those dups will stay in codecache forever.
>
> Further, it doesn’t make sense to recompile with the same level and same bci. With this assertion, the following tests in tier1-test failed.
> test/hotspot/jtreg/compiler/intrinsics/unsafe/DirectByteBufferTest.java
> test/hotspot/jtreg/compiler/intrinsics/unsafe/HeapByteBufferTest.java
> test/jdk/java/util/stream/test/org/openjdk/tests/java/util/stream/ToArrayOpTest.java
> test/jdk/tools/pack200/Pack200Test.java
> test/jdk/java/util/Arrays/SortingNearlySortedPrimitive.java
>
> All crashes happen as I described in JDK-8222670. Eg. duplicated OSR compilations occur for level2.
>
> Program received signal SIGSEGV, Segmentation fault.
> # To suppress the following error report, specify this argument
> # after -XX: or in .hotspotrc: SuppressErrorAt=/instanceKlass.cpp:2972
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # Internal Error (/src/src/hotspot/share/oops/instanceKlass.cpp:2972), pid=8347, tid=8361
> # assert(prev == __null || !prev->is_in_use()) failed: redundunt OSR recompilation detected. memory leak in CodeCache!
> #
> # JRE version: OpenJDK Runtime Environment (13.0) (slowdebug build 13-internal+0-adhoc..src)
> # Java VM: OpenJDK 64-Bit Server VM (slowdebug 13-internal+0-adhoc..src, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
> # Problematic frame:
> # V [libjvm.so+0xb3dbb4] InstanceKlass::add_osr_nmethod(nmethod*)+0xc4
> #
> # No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
> #
> # An error report file with more information is saved as:
> # /build/JTwork/scratch/hs_err_pid8347.log
>
> Program received signal SIGSEGV, Segmentation fault.
> Compiled method (c1) 19032 752 % 2 ByteBufferTest::stepUsingAccessors @ 382 (633 bytes)
> total in heap [0x00007fffd8f9ff90,0x00007fffd8fac628] = 50840
> relocation [0x00007fffd8fa0110,0x00007fffd8fa1388] = 4728
> main code [0x00007fffd8fa13a0,0x00007fffd8fa7f80] = 27616
> stub code [0x00007fffd8fa7f80,0x00007fffd8fa86c0] = 1856
> oops [0x00007fffd8fa86c0,0x00007fffd8fa86c8] = 8
> metadata [0x00007fffd8fa86c8,0x00007fffd8fa8800] = 312
> scopes data [0x00007fffd8fa8800,0x00007fffd8fa9ff8] = 6136
> scopes pcs [0x00007fffd8fa9ff8,0x00007fffd8fac408] = 9232
> dependencies [0x00007fffd8fac408,0x00007fffd8fac418] = 16
> nul chk table [0x00007fffd8fac418,0x00007fffd8fac628] = 528
> Compiled method (c1) 19032 752 % 2 ByteBufferTest::stepUsingAccessors @ 382 (633 bytes)
> total in heap [0x00007fffd8f9ff90,0x00007fffd8fac628] = 50840
> relocation [0x00007fffd8fa0110,0x00007fffd8fa1388] = 4728
> main code [0x00007fffd8fa13a0,0x00007fffd8fa7f80] = 27616
> stub code [0x00007fffd8fa7f80,0x00007fffd8fa86c0] = 1856
> oops [0x00007fffd8fa86c0,0x00007fffd8fa86c8] = 8
> metadata [0x00007fffd8fa86c8,0x00007fffd8fa8800] = 312
> scopes data [0x00007fffd8fa8800,0x00007fffd8fa9ff8] = 6136
> scopes pcs [0x00007fffd8fa9ff8,0x00007fffd8fac408] = 9232
> dependencies [0x00007fffd8fac408,0x00007fffd8fac418] = 16
> nul chk table [0x00007fffd8fac418,0x00007fffd8fac628] = 528
>
>
> Thanks,
> --lx
>
> On 4/19/19, 9:31 AM, "Severin Gehwolf" <sgehwolf at redhat.com> wrote:
>
> On Thu, 2019-04-18 at 19:46 +0000, Liu, Xin wrote:
> > Hi, hotspot-compiler group,
> >
> > Could you review this webrev for JDK-8222670?
> > https://cr.openjdk.java.net/~xliu/8222670/webrev.01/
>
> +++ new/test/hotspot/jtreg/compiler/tiered/TieredLevelsTest.java 2019-04-18 12:18:38.000000000 -0700
> @@ -89,7 +89,7 @@
> && actual == COMP_LEVEL_LIMITED_PROFILE) {
> // for simple method full_profile may be replaced by limited_profile
> if (IS_VERBOSE) {
> - System.out.printf("Level check: full profiling was replaced "
> + System.out.println("Level check: full profiling was replaced "
> + "by limited profiling. Expected: %d, actual:%d",
> expected, actual);
>
> This seems an unintended change, is it?
>
> Thanks,
> Severin
>
>
>
>
>
More information about the hotspot-compiler-dev
mailing list