JDK-8296077 : applications/javafuzzer/BigTest.java fails "assert(false) failed: graph should be schedulable" after JDK-8281429
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 19,20
  • Priority: P3
  • Status: Open
  • Resolution: Unresolved
  • OS: linux
  • CPU: x86_64
  • Submitted: 2022-10-28
  • Updated: 2022-10-31
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 20
20Unresolved
Related Reports
Relates :  
Description
The following test failed in the JDK20 CI:

applications/javafuzzer/BigTest.java

Here's a snippet from the log file:

Summary of the JavaFuzzer run:
------------------------------
Host:     ol7-x64-274111
Tests:    12 x 300
Args:     -conf config.yml

Started  at: Fri Oct 28 09:36:37 UTC 2022


r2- 300: 180 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 120 Reference Java failures
r6- 300: 186 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 114 Reference Java failures
r9- 300: 186 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 114 Reference Java failures
r11- 300: 171 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 129 Reference Java failures
r10- 300: 184 passed, 2 crashes, 0 fails, 0 hangs, 0 incorrect tests, 115 Reference Java failures
r3- 300: 184 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 116 Reference Java failures
r5- 300: 176 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 124 Reference Java failures
r4- 300: 186 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 114 Reference Java failures
r1- 300: 190 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 110 Reference Java failures
r12- 300: 162 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 138 Reference Java failures
r8- 300: 182 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 118 Reference Java failures
r7- 300: 172 passed, 0 crashes, 0 fails, 0 hangs, 0 incorrect tests, 128 Reference Java failures

Finished at: Fri Oct 28 18:44:02 UTC 2022


#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/opt/mach5/mesos/work_dir/slaves/0c72054a-24ab-4dbb-944f-97f9341a1b96-S8408/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b6c8bc25-7755-42c4-b6d4-d30f4668cc7d/runs/f7ea9919-bf9b-4209-8b86-83c52d30d055/workspace/open/src/hotspot/share/opto/gcm.cpp:1423), pid=8535, tid=8549
#  assert(false) failed: graph should be schedulable
#
# JRE version: Java(TM) SE Runtime Environment (20.0+21) (fastdebug build 20-ea+21-1545)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 20-ea+21-1545, compiled mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0xef33ea]  PhaseCFG::schedule_late(VectorSet&, Node_Stack&)+0xc4a
#
# Core dump will be written. Default location: Core dumps may be processed with "/opt/core.sh %p" (or dumping to /tmp/fuzzer.tmp.G2cFfXgTa0/core.8535)
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/opt/mach5/mesos/work_dir/slaves/0c72054a-24ab-4dbb-944f-97f9341a1b96-S8408/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/b6c8bc25-7755-42c4-b6d4-d30f4668cc7d/runs/f7ea9919-bf9b-4209-8b86-83c52d30d055/workspace/open/src/hotspot/share/opto/gcm.cpp:1423), pid=8729, tid=8747
#  assert(false) failed: graph should be schedulable
#
# JRE version: Java(TM) SE Runtime Environment (20.0+21) (fastdebug build 20-ea+21-1545)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 20-ea+21-1545, compiled mode, sharing, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0xef33ea]  PhaseCFG::schedule_late(VectorSet&, Node_Stack&)+0xc4a
#
# Core dump will be written. Default location: Core dumps may be processed with "/opt/core.sh %p" (or dumping to /tmp/fuzzer.tmp.G2cFfXgTa0/core.8729)
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#

[2022-10-28T18:44:02.517491765Z] Waiting for completion for process 4532
[2022-10-28T18:44:02.517690100Z] Waiting for completion finished for process 4532
----------System.err:(13/728)----------
java.lang.RuntimeException: assertEquals: expected 1 to equal 2
	at jdk.test.lib.Asserts.fail(Asserts.java:594)
	at jdk.test.lib.Asserts.assertEquals(Asserts.java:205)
	at jdk.test.lib.Asserts.assertEquals(Asserts.java:189)
	at applications.javafuzzer.JavaFuzzerRunner.main(JavaFuzzerRunner.java:245)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:312)
	at java.base/java.lang.Thread.run(Thread.java:1591)

JavaTest Message: Test threw exception: java.lang.RuntimeException
JavaTest Message: shutting down test

result: Failed. Execution failed: `main' threw exception: java.lang.RuntimeException: assertEquals: expected 1 to equal 2


Here's the stack trace for the first crash:

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

Current thread (0x00007f981c341a10):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=8549, stack(0x00007f98048b1000,0x00007f98049b2000)]


Current CompileTask:
C2:   1476   91   !b  4       Test::vMeth (305 bytes)

Stack: [0x00007f98048b1000,0x00007f98049b2000],  sp=0x00007f98049ac9b0,  free space=1006k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xef33ea]  PhaseCFG::schedule_late(VectorSet&, Node_Stack&)+0xc4a  (gcm.cpp:1423)
V  [libjvm.so+0xef3cb6]  PhaseCFG::global_code_motion()+0x366  (gcm.cpp:1520)
V  [libjvm.so+0xef7d41]  PhaseCFG::do_global_code_motion()+0x51  (gcm.cpp:1642)
V  [libjvm.so+0xb03125]  Compile::Code_Gen()+0x285  (compile.cpp:2942)
V  [libjvm.so+0xb08d86]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x16c6  (compile.cpp:864)
V  [libjvm.so+0x918647]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x4e7  (c2compiler.cpp:113)
V  [libjvm.so+0xb15c3c]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0xa7c  (compileBroker.cpp:2237)
V  [libjvm.so+0xb16a68]  CompileBroker::compiler_thread_loop()+0x608  (compileBroker.cpp:1916)
V  [libjvm.so+0x108b486]  JavaThread::thread_main_inner()+0x206  (javaThread.cpp:699)
V  [libjvm.so+0x1a949b0]  Thread::call_run()+0x100  (thread.cpp:224)
V  [libjvm.so+0x1728593]  thread_native_entry(Thread*)+0x103  (os_linux.cpp:710)


Here's the stack trace for the second crash:

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

Current thread (0x00007f277c340ff0):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=8747, stack(0x00007f27707e6000,0x00007f27708e7000)]


Current CompileTask:
C2:   1778   81   !b        Test::vMeth (305 bytes)

Stack: [0x00007f27707e6000,0x00007f27708e7000],  sp=0x00007f27708e19b0,  free space=1006k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xef33ea]  PhaseCFG::schedule_late(VectorSet&, Node_Stack&)+0xc4a  (gcm.cpp:1423)
V  [libjvm.so+0xef3cb6]  PhaseCFG::global_code_motion()+0x366  (gcm.cpp:1520)
V  [libjvm.so+0xef7d41]  PhaseCFG::do_global_code_motion()+0x51  (gcm.cpp:1642)
V  [libjvm.so+0xb03125]  Compile::Code_Gen()+0x285  (compile.cpp:2942)
V  [libjvm.so+0xb08d86]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x16c6  (compile.cpp:864)
V  [libjvm.so+0x918647]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x4e7  (c2compiler.cpp:113)
V  [libjvm.so+0xb15c3c]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0xa7c  (compileBroker.cpp:2237)
V  [libjvm.so+0xb16a68]  CompileBroker::compiler_thread_loop()+0x608  (compileBroker.cpp:1916)
V  [libjvm.so+0x108b486]  JavaThread::thread_main_inner()+0x206  (javaThread.cpp:699)
V  [libjvm.so+0x1a949b0]  Thread::call_run()+0x100  (thread.cpp:224)
V  [libjvm.so+0x1728593]  thread_native_entry(Thread*)+0x103  (os_linux.cpp:710)
Comments
ILW = Assert during C2 compilation (bailout in product), reproducible with generated test, no workaround = MMM = P3
31-10-2022

[~roland], please take a look.
29-10-2022