JDK-8231405 : [Shenandoah] guarantee(d != NULL) failed: Null dominator info
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 8-shenandoah,11-shenandoah,13,14
  • Priority: P1
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: x86_64
  • Submitted: 2019-09-24
  • Updated: 2020-06-01
  • Resolved: 2019-09-27
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 13 JDK 14
13.0.2Fixed 14 b17Fixed
Description
This issue was originally reported here:
https://github.com/AdoptOpenJDK/openjdk-build/issues/1291

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (loopnode.hpp:979), pid=1, tid=30
#  guarantee(d != NULL) failed: Null dominator info.
#
# JRE version: OpenJDK Runtime Environment (13.0+33) (build 13+33)
# Java VM: OpenJDK 64-Bit Server VM (13+33, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0xb140a4]  PhaseIdealLoop::dom_depth(Node*) const [clone .isra.122]+0x94
#
# Core dump will be written. Default location: /opt/core
#
# An error report file with more information is saved as:
# /opt/hs_err_pid1.log
#
# Compiler replay data is saved as:
# /opt/replay_pid1.log
#
# If you would like to submit a bug report, please visit:
#   https://github.com/AdoptOpenJDK/openjdk-build/issues
#

[error occurred during error reporting (), id 0xb, SIGSEGV (0xb) at pc=0x00007efe29bab884]

Seems to only happen with -XX:+UseShenandoahGC on JDK 13+33 (GA version), not with JDK 12-ga.

Note that this crash happens in a docker container running on kubernetes.
Comments
To benefit those who Google this bug. The fix is in 14-ea, 11.0.5 Red Hat downstream. Unfortunately, the fix did not make it in upstream 13.0.1, only in 13.0.2. However, there are few distributions that include it regardless. For example, Fedora includes it in 13.0.1.9, Liberica JDK includes it in 13.0.1.
22-11-2019

Fix Request (13u, critical) Backporting this patch fixes the critical C2 bug with Shenandoah. It would be nice to have it in 13.0.1. The patch applies cleanly to 13u, passes hotspot_gc_shenandoah, tier1, tier2 (with Shenandoah), jdk_security (with Shenandoah). The fix is constrained to Shenandoah code, and so the risk for the rest of the code is very low.
30-09-2019

URL: https://hg.openjdk.java.net/jdk/jdk/rev/222a91b9438a User: roland Date: 2019-09-27 09:31:55 +0000
27-09-2019

More tests failing in tier2 with Shenandoah with the same stack trace during compilation of sun.security.ssl.SSLEngineImpl::unwrap: com/sun/net/httpserver/Test6a java/net/HttpURLConnection/SetAuthenticator/HTTPSetAuthenticatorTest java/net/httpclient/ProxyAuthDisabledSchemesSSL java/net/httpclient/DigestEchoClientSSL java/net/httpclient/ShortResponseBody java/net/httpclient/ShortResponseBodyWithRetry java/net/httpclient/RequestBodyTest
26-09-2019

Other failing tests: *) Fail at compiling: C2: 7060 2727 4 SSLEngineTestCase::handshakeProcess (573 bytes) javax/net/ssl/DTLS/DTLSRehandshakeWithCipherChangeTest.java javax/net/ssl/DTLSv10/DTLSv10MFLNTest.java javax/net/ssl/TLSv11/TLSMFLNTest.java *) Fail at compiling: C2: 2181 975 4 javax.net.ssl.SSLEngine::unwrap (16 bytes) javax/net/ssl/SSLEngine/LargePacket.java sun/security/ssl/SSLEngineImpl/SSLEngineDeadlock.java I guess the latter two are easier to inspect IR-wise, they are only 16 bytes long.
25-09-2019

Roland, can you look into this? This seems to go wrong when trying to collect call-projections on I_O/catch-all-path. Reproducer and hs_err and replay are linked in the bug.
25-09-2019

See hs_err: http://cr.openjdk.java.net/~rkennke/hs_err_pid72689.log And compiler replay: http://cr.openjdk.java.net/~rkennke/replay_pid72689.log
25-09-2019

Seeing how we are crashing compiling SSLEngine, tried to test jdk_security with Shenandoah enabled. This gives use the reproducer for both jdk/jdk and sh/jdk11: $ make images run-test TEST=javax/net/ssl/DTLSv10/DTLSv10MFLNTest.java TEST_VM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC" Fastdebug fails with another assert.
25-09-2019

Can this be reproduced with a fastdebug build?
25-09-2019