Skip to content

Aarch64/TemurinJdk 17.0.9+9: C1 CompilerThread0 crashing with Field too big for insn #951

@bbeaudreault

Description

@bbeaudreault

Please provide a brief summary of the bug

See below crash report. Note that the version below says 17.0.6+10, but I've also seen it on 17.0.9+9. I upgraded hoping it would fix it, but it didn't.

This exact code has worked perfectly on temurinjdk11.0.12+7 for a long time. We recently upgraded to 17, and started seeing this. The code in question is opensource -- apache hbase. Here's a link to our fork of the failing code: https://github.com/HubSpot/hbase/blob/hubspot-2.5/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java#L778

Unfortunately the crash does not happen consistently, instead intermittently. I haven't been able to figure out what confluence of events lead to the crash, or get a core dump.

Reading around, it seems the @ 568 is a bytecode index. I tried decompiling the RegionServerMetricsWrapperRunnable class with javap -p -c -verbose to see if i could align the bci to a line number. I'm not sure if this is reliable, but it aligns to this line.

Please provide steps to reproduce where possible

I can't really provide this. It seems to happen semi-randomly after the jvm has been running for a while, and is probably workload dependent because we run thousands of servers with this code (some aarch64, some x86) across 10s of clusters, and have only seen it happen on 1 cluster. But it happens pretty periodically there.

Expected Results

Don't crash

Actual Results

Crashes

What Java Version are you using?

openjdk version "17.0.9" 2023-10-17 OpenJDK Runtime Environment Temurin-17.0.9+9 (build 17.0.9+9) OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (build 17.0.9+9, mixed mode, sharing)

What is your operating system and platform?

Host: AArch64, 8 cores, 46G, CentOS Stream release 8

How did you install Java?

No response

Did it work before?

Used to work fine with temurinjdk11.0.12+7

Did you test with the latest update version?

Yes

Did you test with other Java versions?

openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment Temurin-17.0.6+10 (build 17.0.6+10)
OpenJDK 64-Bit Server VM Temurin-17.0.6+10 (build 17.0.6+10, mixed mode, sharing)

openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment Temurin-17.0.9+9 (build 17.0.9+9)
OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (build 17.0.9+9, mixed mode, sharing)

Relevant log output

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (assembler_aarch64.hpp:267), pid=2824384, tid=2824465
#  guarantee(chk == -1 || chk == 0) failed: Field too big for insn
#
# JRE version: OpenJDK Runtime Environment Temurin-17.0.6+10 (17.0.6+10) (build 17.0.6+10)
# Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.6+10 (17.0.6+10, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# V  [libjvm.so+0x479360]  LIR_Assembler::osr_entry()+0x200
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" (or dumping to //core.2824384)
#
# If you would like to submit a bug report, please visit:
#   https://github.com/adoptium/adoptium-support/issues
#

---------------  S U M M A R Y ------------

Command Line: -Dproc_regionserver -XX:OnOutOfMemoryError=kill -9 %p -Xmx16390m -XX:MaxDirectMemorySize=20825m -Dhbase.default.appender=main -Dlog4j2.configurationFile=/etc/hbase/conf/daemon-log4j2.xml -Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -Dlog4j2.asyncQueueFullPolicy=Discard -Dlog4j2.discardThreshold=FATAL -Dasync.profiler.home=/opt/async-profiler -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/hbase -Djava.net.preferIPv4Stack=true -XX:-OmitStackTraceInFastThrow -Dorg.apache.hbase.thirdparty.io.netty.maxDirectMemory=3221225472 -Dorg.apache.hbase.thirdparty.io.netty.tryReflectionSetAccessible=true -Dorg.apache.hbase.thirdparty.io.netty.leakDetection.level=disabled -Djdk.nio.maxCachedBufferSize=262144 -Djava.util.logging.config.class=org.apache.hadoop.hbase.logging.JulToSlf4jInitializer -Xlog:gc*=info,ergo*=trace,age*=trace,safepoint:file=/var/tmp-gc-logs/hbase/gc-regionserver.log:tags,time,uptime,level:filecount=5,filesize=20M -XX:+UseG1GC -XX:+ResizePLAB -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=16M -XX:ParallelGCThreads=8 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=5 -XX:G1MaxNewSizePercent=60 -XX:G1HeapWastePercent=12 -XX:MaxTenuringThreshold=1 -XX:G1MixedGCCountTarget=64 -XX:G1ReservePercent=10 -XX:+ParallelRefProcEnabled -XX:G1OldCSetRegionThresholdPercent=5 -XX:-G1UseAdaptiveIHOP -XX:InitiatingHeapOccupancyPercent=85 -XX:+DisableExplicitGC -XX:+PerfDisableSharedMem -XX:-UseBiasedLocking -XX:+SafepointTimeout -XX:SafepointTimeoutDelay=500 -Xms16390m -XX:+AlwaysPreTouch -Dio.netty.tryReflectionSetAccessible=true --illegal-access=permit --add-modules=jdk.unsupported --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED -Dhbase.log.dir=/var/log/hbase -Dhbase.home.dir=/usr/lib/hbase/bin/.. -Dhbase.id.str=hbase -Dhbase.root.logger=INFO,RFA -Djava.library.path=:/usr/lib/hbase/lib/native/Linux-amd64-64/:/usr/lib/hadoop-0.20/lib/native/Linux-amd64-64/:/usr/lib/hadoop/lib/native -Dhbase.security.logger=INFO,RFAS org.apache.hadoop.hbase.regionserver.HRegionServer start

Host: AArch64, 8 cores, 46G, CentOS Stream release 8
Time: Tue Nov 14 13:20:10 2023 UTC elapsed time: 4353.617495 seconds (0d 1h 12m 33s)

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

Current thread (0x0000ffff90984e50):  JavaThread "C1 CompilerThread0" daemon [_thread_in_native, id=2824465, stack(0x0000ffff493fe000,0x0000ffff495fe000)]


Current CompileTask:
C1:4353617 24783 %s!   3       org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapperImpl$RegionServerMetricsWrapperRunnable::run @ 568 (2086 bytes)

Stack: [0x0000ffff493fe000,0x0000ffff495fe000],  sp=0x0000ffff495fb440,  free space=2037k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x479360]  LIR_Assembler::osr_entry()+0x200
V  [libjvm.so+0x476c24]  LIR_Assembler::emit_lir_list(LIR_List*)+0x90
V  [libjvm.so+0x476e1c]  LIR_Assembler::emit_code(BlockList*)+0x5c
V  [libjvm.so+0x4478d0]  Compilation::emit_code_body()+0x110
V  [libjvm.so+0x447cd8]  Compilation::compile_java_method()+0x2e4
V  [libjvm.so+0x447eec]  Compilation::compile_method()+0x10c
V  [libjvm.so+0x44825c]  Compilation::Compilation(AbstractCompiler*, ciEnv*, ciMethod*, int, BufferBlob*, bool, DirectiveSet*)+0x1a8
V  [libjvm.so+0x448d74]  Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x74
V  [libjvm.so+0x5a34a4]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x900
V  [libjvm.so+0x5a4248]  CompileBroker::compiler_thread_loop()+0x458
V  [libjvm.so+0xd7abc8]  JavaThread::thread_main_inner()+0x144
V  [libjvm.so+0xd7f94c]  Thread::call_run()+0x8c
V  [libjvm.so+0xb5fa7c]  thread_native_entry(Thread*)+0xdc
C  [libpthread.so.0+0x78b8]  start_thread+0x188

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingjbs:reportedSomeone from our org has reported it to OpenJDKstale

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions