JDK-8256016 : Dacapo24H.java failed with "assert(false) failed: unscheduable graph"
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 13,14,15,16
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: x86_64
  • Submitted: 2020-11-08
  • Updated: 2020-12-15
  • Resolved: 2020-11-25
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 16
16 b26Fixed
Related Reports
Relates :  
Relates :  
Description
The following test failed in the JDK16 CI:

applications/dacapo/Dacapo24H.java

Here's a snippet from the log file:

[stress.process.err] Failing node:  311  CallStaticJavaDirect  ===  4157  2533  2534  21  0  63  2530  24  25  63  26  27  197  2537  0  0  0  0  0  0  0  0  2537  63  2537  2537  25  2509  26  2538  314  313  63  [[ 312  310  2543  2545  2546 ]] Static  org.h2.mvstore.db.MVSecondaryIndex::convertToSearchRow # org/h2/result/SearchRow * ( org/h2/mvstore/db/MVSecondaryIndex:NotNull *, org/h2/value/ValueArray * ) MVSecondaryIndex$MVStoreCursor::getSearchRow @ bci:26 MVSecondaryIndex$MVStoreCursor::next @ bci:56 ConstraintReferential::existsRow @ bci:30 !jvms: ValueLong::get @ bci:26 MVSecondaryIndex::convertToKey @ bci:87 MVSecondaryIndex::find @ bci:2 MVSecondaryIndex::find @ bci:5 ConstraintReferential::existsRow @ bci:21
[stress.process.err] # To suppress the following error report, specify this argument
[stress.process.err] # after -XX: or in .hotspotrc:  SuppressErrorAt=/gcm.cpp:276
[stress.process.err] # [ timer expired, abort... ]
Unexpected exception Connection reset during communication. Check process module status.
================================================================================

Here's snippets from the hs_err_pid file:

#  Internal Error (/opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S27827/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/9e102465-cc2d-465b-827e-db202f69a076/runs/5d37edf7-96ca-4b4b-a4cc-5e5c0b202fbc/workspace/open/src/hotspot/share/opto/gcm.cpp:276), pid=5019, tid=26249
#  assert(false) failed: unscheduable graph
#
# JRE version: Java(TM) SE Runtime Environment (16.0+23) (fastdebug build 16-ea+23-1373)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 16-ea+23-1373, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0xcf83d2]  assert_dom(Block*, Block*, Node*, PhaseCFG const*)+0x1b2

---------------  T H R E A D  ---------------

Current thread (0x00007ffabafeac00):  JavaThread "C2 CompilerThread1" daemon [_thread_in_native, id=26249, stack(0x00007ffae53e3000,0x00007ffae54e4000)]


Current CompileTask:
C2:61267963 3975590       4       org.h2.constraint.ConstraintReferential::existsRow (174 bytes)

Stack: [0x00007ffae53e3000,0x00007ffae54e4000],  sp=0x00007ffae54dee10,  free space=1007k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xcf83d2]  assert_dom(Block*, Block*, Node*, PhaseCFG const*)+0x1b2
V  [libjvm.so+0xcf9b48]  PhaseCFG::schedule_early(VectorSet&, Node_Stack&)+0x588
V  [libjvm.so+0xd02161]  PhaseCFG::global_code_motion()+0x281
V  [libjvm.so+0xd061f1]  PhaseCFG::do_global_code_motion()+0x51
V  [libjvm.so+0x9f46f0]  Compile::Code_Gen()+0x290
V  [libjvm.so+0x9fe203]  Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x1a33
V  [libjvm.so+0x83d3ee]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1ce
V  [libjvm.so+0xa0e258]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0xe08
V  [libjvm.so+0xa0eda8]  CompileBroker::compiler_thread_loop()+0x5a8
V  [libjvm.so+0x1859386]  JavaThread::thread_main_inner()+0x256
V  [libjvm.so+0x1860050]  Thread::call_run()+0x100
V  [libjvm.so+0x1551b16]  thread_native_entry(Thread*)+0x116

VM Arguments:
jvm_args: -Xbootclasspath/a:/opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/wb.jar -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:MaxRAMPercentage=6 -Djava.io.tmpdir=/opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/tmp -da:edu.cmu.graphchi... -da:java.util.logging... -XX:MaxRAMPercentage=50 -Djava.vm.version=1.14.0 -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:+CrashOnOutOfMemoryError -XX:+DisplayVMOutputToStderr -Xlog:gc*,gc+heap=debug:gc.log:uptime,timemillis,level,tags -XX:+DisableExplicitGC -XX:+StartAttachListener --illegal-access=deny --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED -Djava.io.tmpdir=/opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/java.io.tmpdir -Duser.home=/opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/user.home -agentpath:/opt/mach5/mesos/work_dir/jib-master/install/jdk-16+23-1373/linux-x64-debug.test/hotspot/jtreg/native/libJvmtiStressModule.so -XX:NativeMemoryTracking=detail -Djdk.test.lib.random.seed=7886031339819370300 
java_command: applications.kitchensink.process.stress.Main /opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/kitchensink.final.properties
java_class_path (initial): /opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/classes/0/applications/dacapo/Dacapo24H.d:/opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/0.jar:/opt/mach5/mesos/work_dir/slaves/47535081-0322-4d83-bb78-f7e11abb86d0-S45925/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b9bc65df-781b-43a1-af3f-cd1f1545eab0/runs/605d05d4-a661-451d-bdd8-b6ad0f38581a/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/1.jar:/opt/mach5/mesos/work_dir/jib-master/download/org/dacapo/309e1fa/dacapo-309e1fa.jar
Launcher Type: SUN_STANDARD

[Global flags]
     intx CICompilerCount                          = 4                                         {product} {ergonomic}     Number of compiler threads to run
     uint ConcGCThreads                            = 2                                         {product} {ergonomic}     Number of threads concurrent gc will use
     bool CrashOnOutOfMemoryError                  = true                                      {product} {command line}  JVM aborts, producing an error log and core/mini dump, on the first occurrence of an out-of-memory error
     bool DisableExplicitGC                        = true                                      {product} {command line}  Ignore calls to System.gc()
     bool DisplayVMOutputToStderr                  = true                                      {product} {command line}  If DisplayVMOutput is true, display all VM output to stderr
     bool DisplayVMOutputToStdout                  = false                                     {product} {command line}  If DisplayVMOutput is true, display all VM output to stdout
     bool FlightRecorder                           = true                                      {product} {management}    (Deprecated) Enable Flight Recorder
     uint G1ConcRefinementThreads                  = 8                                         {product} {ergonomic}     The number of parallel rem set update threads. Will be set ergonomically by default.
   size_t G1HeapRegionSize                         = 8388608                                   {product} {ergonomic}     Size of the G1 regions.
    uintx GCDrainStackTargetSize                   = 64                                        {product} {ergonomic}     Number of entries we will try to leave on the stack during parallel gc
     bool HeapDumpOnOutOfMemoryError               = true                                   {manageable} {command line}  Dump heap to file when java.lang.OutOfMemoryError is thrown
   size_t InitialHeapSize                          = 528482304                                 {product} {ergonomic}     Initial heap size (in bytes); zero means use ergonomics
   size_t MarkStackSize                            = 4194304                                   {product} {ergonomic}     Size of marking stack
   size_t MaxHeapSize                              = 16726884352                               {product} {ergonomic}     Maximum heap size (in bytes)
   size_t MaxNewSize                               = 10032775168                               {product} {ergonomic}     Maximum new generation size (in bytes), max_uintx means set ergonomically
 uint64_t MaxRAM                                   = 33444835328                            {pd product} {ergonomic}     Real memory size (in bytes) used to set maximum heap size
   double MaxRAMPercentage                         = 50.000000                                 {product} {command line}  Maximum percentage of real memory used for maximum heap size
   size_t MinHeapDeltaBytes                        = 8388608                                   {product} {ergonomic}     The minimum change in heap space due to GC (in bytes)
   size_t MinHeapSize                              = 8388608                                   {product} {ergonomic}     Minimum heap size (in bytes); zero means use ergonomics
    ccstr NativeMemoryTracking                     = detail                                    {product} {command line}  Native memory tracking options
    uintx NonNMethodCodeHeapSize                   = 5839372                                {pd product} {ergonomic}     Size of code heap with non-nmethods (in bytes)
    uintx NonProfiledCodeHeapSize                  = 122909434                              {pd product} {ergonomic}     Size of code heap with non-profiled methods (in bytes)
    uintx ProfiledCodeHeapSize                     = 122909434                              {pd product} {ergonomic}     Size of code heap with profiled methods (in bytes)
    uintx ReservedCodeCacheSize                    = 251658240                              {pd product} {ergonomic}     Reserved code cache size (in bytes) - maximum code cache size
     bool SegmentedCodeCache                       = true                                      {product} {ergonomic}     Use a segmented code cache
   size_t SoftMaxHeapSize                          = 16726884352                            {manageable} {ergonomic}     Soft limit for maximum heap size (in bytes)
     bool StartAttachListener                      = true                                      {product} {command line}  Always start Attach Listener at VM startup
     bool UnlockDiagnosticVMOptions                = true                                   {diagnostic} {command line}  Enable normal processing of flags relating to field diagnostics
     bool UseCompressedClassPointers               = true                           {product lp64_product} {ergonomic}   Use 32-bit class pointers in 64-bit VM. lp64_product means flag is always constant in 32 bit VM
     bool UseCompressedOops                        = true                           {product lp64_product} {ergonomic}   Use 32-bit object references in 64-bit VM. lp64_product means flag is always constant in 32 bit VM
     bool UseG1GC                                  = true                                      {product} {ergonomic}     Use the Garbage-First garbage collector
     bool WhiteBoxAPI                              = true                                   {diagnostic} {command line}  Enable internal testing APIs
Comments
Changeset: 7aed9b65 Author: Christian Hagedorn <chagedorn@openjdk.org> Date: 2020-11-25 14:00:40 +0000 URL: https://github.com/openjdk/jdk/commit/7aed9b65
25-11-2020

Escape analysis has just revealed an existing problem introduced by JDK-8220376 and the bug is therefore unrelated to JDK-8227745.
24-11-2020

I added a working replay file. I could trace it back to JDK-8227745. It starts to fail after this change. This suggests that something in escape analysis triggers this assert. I will take a closer look.
12-11-2020

Unfortunately the replay compilation file is incomplete and therefore useless.
12-11-2020

I've attached these files to the bug report: Dacapo24H.log hs_err_pid5019.log replay_pid5019.log
08-11-2020