A fatal error has been detected by the Java Runtime Environment

现象

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fcf660bf067, pid=795, tid=0x00007fcf09a65700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_92-b14) (build 1.8.0_92-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.92-b14 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x438067]  ciObjectFactory::create_new_metadata(Metadata*)+0x327
#
# Failed to write core dump. 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:
# hs_err_pid795.log
#
# Compiler replay data is saved as:
# replay_pid795.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp

过程

查看日志

hs_err_pid795.log(只截取了重要信息)

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fcf660bf067, pid=795, tid=0x00007fcf09a65700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_92-b14) (build 1.8.0_92-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.92-b14 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x438067]  ciObjectFactory::create_new_metadata(Metadata*)+0x327
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

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

Current thread (0x00007fcf60804800):  JavaThread "C2 CompilerThread2" daemon [_thread_in_vm, id=839, stack(0x00007fcf09965000,0x00007fcf09a66000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000013

Registers:
RAX=0x000000000000000b, RBX=0x00000000000000bb, RCX=0x00000037800182a0, RDX=0x00007fcf09a65a20
RSP=0x00007fcf09a62090, RBP=0x00007fcf09a62100, RSI=0x00007fcf3152bce8, RDI=0x00007fcf3152bce8
R8 =0x0000000000000000, R9 =0x0000000000000000, R10=0x0000000000000000, R11=0x000000377f75a290
R12=0x00007fcf3152bce8, R13=0x00007fcef8e79940, R14=0x00007fcf60804800, R15=0x00007fcef8e79940
RIP=0x00007fcf660bf067, EFLAGS=0x0000000000010202, CSGSFS=0x0000000000000033, ERR=0x0000000000000004
  TRAPNO=0x000000000000000e

Top of Stack: (sp=0x00007fcf09a62090)
0x00007fcf09a62090:   00007fcf09a620d0 00007fcf660cd796
0x00007fcf09a620a0:   00007fcf09a62110 00007fcf09a62190
0x00007fcf09a620b0:   01007fcf09a620d0 00007fcf09a62190
0x00007fcf09a620c0:   00007fceec499b80 000000000000000a
0x00007fcf09a620d0:   00007fcf09a62110 00000000000000bb
0x00007fcf09a620e0:   00007fcf3152bce8 00007fcef8e79940
0x00007fcf09a620f0:   00000000000000c1 00007fcf18017120
0x00007fcf09a62100:   00007fcf09a62140 00007fcf660bf495
0x00007fcf09a62110:   00007fcf09a62210 0000000000000000
0x00007fcf09a62120:   00007fcf3152bce8 0000000000000000
0x00007fcf09a62130:   00007fcf66c05aa0 00007fceec499c20
0x00007fcf09a62140:   00007fcf09a62180 00007fcf660b7167
0x00007fcf09a62150:   0000000000000010 00007fceec499c20
0x00007fcf09a62160:   00007fcf1801a450 00007fcf09f3ffc8
0x00007fcf09a62170:   00007fcf09a62190 00007fcf09f3fe98
0x00007fcf09a62180:   00007fcf09a622c0 00007fcf660b7478
0x00007fcf09a62190:   00007fcf60208030 000000004e62974e
0x00007fcf09a621a0:   00007fcf09a621f0 00007fcf666b5265
0x00007fcf09a621b0:   00007fcf60804800 3c494703ec499b80
0x00007fcf09a621c0:   00007fcf09a62230 00007fcf09a62230
0x00007fcf09a621d0:   00007fcf60804c40 0000000000000000
0x00007fcf09a621e0:   00007fcf60804c40 0000000000000000
0x00007fcf09a621f0:   00007fcf09a62280 00007fcf66531832
0x00007fcf09a62200:   0000000000000000 00007fcf09a622a0
0x00007fcf09a62210:   00007fceec498c10 00007fceec499b80
0x00007fcf09a62220:   00007fceec4a0bf8 0000000000018360
0x00007fcf09a62230:   00007fcf313861c0 00007fcf66560b52
0x00007fcf09a62240:   0000000000000010 00007fcf1801a2b0
0x00007fcf09a62250:   00007fcf09a62270 0000000000000003
0x00007fcf09a62260:   00000001000ef3e0 0000000000000003
0x00007fcf09a62270:   0000000000000003 00007fcef0882620
0x00007fcf09a62280:   00007fcf09a622c0 00007fcf660ba062 

Instructions: (pc=0x00007fcf660bf067)
0x00007fcf660bf047:   83 c6 08 39 c7 7c e2 44 8d 48 ff 45 89 08 e9 7b
0x00007fcf660bf057:   fd ff ff 66 0f 1f 44 00 00 49 8b 04 24 4c 89 e7
0x00007fcf660bf067:   ff 50 08 84 c0 0f 84 05 fd ff ff 41 8b 44 24 08
0x00007fcf660bf077:   85 c0 0f 8e f8 fc ff ff 41 f6 84 24 0e 01 00 00 

Register to memory mapping:

RAX=0x000000000000000b is an unknown value
RBX=0x00000000000000bb is an unknown value
RCX=0x00000037800182a0: <offset 0x2182a0> in /lib64/libpthread.so.0 at 0x000000377fe00000
RDX=0x00007fcf09a65a20 is pointing into the stack for thread: 0x00007fcf60804800
RSP=0x00007fcf09a62090 is pointing into the stack for thread: 0x00007fcf60804800
RBP=0x00007fcf09a62100 is pointing into the stack for thread: 0x00007fcf60804800
RSI=0x00007fcf3152bce8 is pointing into metadata
RDI=0x00007fcf3152bce8 is pointing into metadata
R8 =0x0000000000000000 is an unknown value
R9 =0x0000000000000000 is an unknown value
R10=0x0000000000000000 is an unknown value
R11=0x000000377f75a290: <offset 0x15a290> in /lib64/libc.so.6 at 0x000000377f600000
R12=0x00007fcf3152bce8 is pointing into metadata
R13=0x00007fcef8e79940 is an unknown value
R14=0x00007fcf60804800 is a thread
R15=0x00007fcef8e79940 is an unknown value


Stack: [0x00007fcf09965000,0x00007fcf09a66000],  sp=0x00007fcf09a62090,  free space=1012k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x438067]  ciObjectFactory::create_new_metadata(Metadata*)+0x327
V  [libjvm.so+0x438495]  ciObjectFactory::get_metadata(Metadata*)+0x85
V  [libjvm.so+0x430167]  ciSpeculativeTrapData::translate_from(ProfileData const*)+0x67
V  [libjvm.so+0x430478]  ciMethodData::load_extra_data()+0xa8
V  [libjvm.so+0x4325e8]  ciMethodData::load_data()+0x268
V  [libjvm.so+0x425344]  ciMethod::method_data()+0xb4
V  [libjvm.so+0x94a675]  Parse::Parse(JVMState*, ciMethod*, float)+0x5f5
V  [libjvm.so+0x3f3168]  ParseGenerator::generate(JVMState*)+0x88
V  [libjvm.so+0x56b506]  Parse::do_call()+0x1e6
V  [libjvm.so+0x953e9a]  Parse::do_one_bytecode()+0x330a
V  [libjvm.so+0x944438]  Parse::do_one_block()+0x178
V  [libjvm.so+0x948647]  Parse::do_all_blocks()+0x127
V  [libjvm.so+0x94a879]  Parse::Parse(JVMState*, ciMethod*, float)+0x7f9
V  [libjvm.so+0x3f3168]  ParseGenerator::generate(JVMState*)+0x88
V  [libjvm.so+0x56b506]  Parse::do_call()+0x1e6
V  [libjvm.so+0x953e9a]  Parse::do_one_bytecode()+0x330a
V  [libjvm.so+0x944438]  Parse::do_one_block()+0x178
V  [libjvm.so+0x948647]  Parse::do_all_blocks()+0x127
V  [libjvm.so+0x94a879]  Parse::Parse(JVMState*, ciMethod*, float)+0x7f9
V  [libjvm.so+0x3f3168]  ParseGenerator::generate(JVMState*)+0x88
V  [libjvm.so+0x56b506]  Parse::do_call()+0x1e6
V  [libjvm.so+0x953e9a]  Parse::do_one_bytecode()+0x330a
V  [libjvm.so+0x944438]  Parse::do_one_block()+0x178
V  [libjvm.so+0x948647]  Parse::do_all_blocks()+0x127
V  [libjvm.so+0x94a879]  Parse::Parse(JVMState*, ciMethod*, float)+0x7f9
V  [libjvm.so+0x3f3168]  ParseGenerator::generate(JVMState*)+0x88
V  [libjvm.so+0x4a42aa]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool)+0x127a
V  [libjvm.so+0x3f1b38]  C2Compiler::compile_method(ciEnv*, ciMethod*, int)+0x198
V  [libjvm.so+0x4aea9a]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0xc9a
V  [libjvm.so+0x4afa46]  CompileBroker::compiler_thread_loop()+0x5d6
V  [libjvm.so+0xa6cc5f]  JavaThread::thread_main_inner()+0xdf
V  [libjvm.so+0xa6cd8c]  JavaThread::run()+0x11c
V  [libjvm.so+0x91fad8]  java_start(Thread*)+0x108
C  [libpthread.so.0+0x79d1]


Current CompileTask:
C2: 165880 16901       4       io.dongtai.iast.thirdparty.org.apache.http.client.utils.URLEncodedUtils::urlDecode (183 bytes)

我们可以在其中捕捉到一些重要信息

  • 线程:JavaThread “C2 CompilerThread2”
  • 崩溃的方法:ciObjectFactory::create_new_metadata(Metadata*)+0x327
  • 崩溃的根本原因:io.dongtai.iast.thirdparty.org.apache.http.client.utils.URLEncodedUtils::urlDecode (183 bytes)

原因分析

C2编译器CompilerThread2线程在执行URLEncodedUtils::urlDecode时试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据

解决方案

直接找到urlDecode所在的包,然后升级到新版本(我也不知道老版本运行这么久了怎么突然有问题)

  • 找到问题所在的包
    在这里插入图片描述
  • 发现不是直接引入的,mvn dependency:tree找到依赖树
    在这里插入图片描述
  • 屏蔽掉,然后引入新版本
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>

参考文章

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误意味着Java运行环境发现了一个致命错误。可能是代码中出现了一个不可恢复的错误,或者是Java环境本身出现了故障。通常会有一些错误消息或日志输出来帮助确定问题的根本原因。建议查看详细的错误消息或日志,并在可能的情况下搜索相关的解决方案。 ### 回答2: "发生了致命错误——Java运行时环境检测到" 的错误信息通常会出现在我们运行Java程序时。这个错误的出现意味着Java虚拟机遇到了无法处理的错误,导致程序无法继续正常运行。 造成此错误的原因有很多种,包括程序代码写的有问题、程序与硬件或操作系统不兼容、虚拟机异常、内存溢出等等。当遇到此错误时,Java程序将会被强行退出,并把相关错误信息打印出来。 我们可以通过查看错误信息来找到问题所在,通常错误信息包含了异常类型、发生错误的类、方法、行数等信息,我们可以通过检查这些信息来解决问题。常见的方法包括检查代码逻辑是否正确、增加内存分配、升级Java版本,或者修改操作系统相关设置等等。 总之,当我们遇到“发生了致命错误——Java运行时环境检测到”错误时,一定要耐心地查看错误信息,并综合考虑可能的原因,才可以找到解决问题的方法,确保程序正常运行。 ### 回答3: “a fatal error has been detected by the java runtime environmentJava运行环境检测到了致命错误)”是指Java应用程序在运行时遇到了无法处理的问题,导致程序无法正常运行并自动关闭。这通常是由于程序中的错误代码或Java虚拟机的错误所引起的。 在Java编程中,因为每个程序员的水平和经验不同,所以错误可能会在程序中出现。有时候,这些错误可能是语法错误,但有时候它们可能是在逻辑上的错误。 一个Java应用程序中出现致命错误的原因可能是多样的。它可能是由于以下原因导致的: 1. 内存不足或内存泄漏 2. 错误配置 3. 硬件故障(如硬盘,显卡,CPU等) 4. 网络连接中断 5. 应用程序错误或程序代码中的bug Java虚拟机也有可能出现问题,从而导致运行时错误。当Java虚拟机检测到这种错误时,它将显示一个错误消息并终止Java应用程序的运行。 为了避免Java应用程序出现致命错误,开发人员需要遵循最佳实践,如编写清晰的代码,使用有效的算法和数据结构,处理异常,并避免使用废弃的API。 当Java应用程序出现致命错误时,开发人员需要检查运行日志以获取更多信息,然后修复代码以解决问题。同时,也可以使用Java虚拟机提供的工具来调试和分析程序,以便更好地了解和诊断问题。 总之,当Java应用程序出现致命错误时,开发人员需及时诊断问题,修复代码并采取措施来预防再次出现此类问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值