我有一个相当大的应用程序,它可以做很多事情(从解析放大器的数据到计算该数据的功率谱密度等)。但现在发生了一个奇怪的错误,它刚刚关闭了应用程序。当我检查日志时,我得到了这个:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000055ee9f91, pid=13940, tid=0x00000000000025c0
#
# JRE version: Java(TM) SE Runtime Environment (8.0_241-b07) (build 1.8.0_241-b07)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.241-b07 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V [jvm.dll+0x199f91]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# 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 (0x0000000022353000): JavaThread "Timer-42" daemon [_thread_in_vm, id=9664, stack(0x0000000039c10000,0x0000000039d10000)]
siginfo: ExceptionCode=0xc0000005, reading address 0x00000000000000a8
Registers:
RAX=0x0000000000000000, RBX=0x0000000000000000, RCX=0x0000000100014b38, RDX=0x0000000002ee65fe
RSP=0x0000000039d0ed60, RBP=0x0000000039d0ee60, RSI=0x0000000000000000, RDI=0x00000000000003d8
R8 =0x00000000024f0000, R9 =0x0000000000000006, R10=0x00007ff9b2291058, R11=0x0000000039d0ed50
R12=0x0000000022353000, R13=0x000000002237de00, R14=0x0000000025253740, R15=0x0000000000000000
RIP=0x0000000055ee9f91, EFLAGS=0x0000000000010246
Top of Stack: (sp=0x0000000039d0ed60)
0x0000000039d0ed60: 0000000000000000 0000000039d0ee60
0x0000000039d0ed70: 00000000d64a3c2c 00000000000003d8
0x0000000039d0ed80: 0000000000000000 0000000000000008
0x0000000039d0ed90: 0000000025253740 0000000025253b18
0x0000000039d0eda0: 0000000000000000 00000000000003d8
0x0000000039d0edb0: 0000000022353000 00000000223531f8
0x0000000039d0edc0: 0000000025253730 000000002237def0
0x0000000039d0edd0: 00000000563652b8 0000000000000000
0x0000000039d0ede0: 0000000000000000 0000000000000000
0x0000000039d0edf0: 0000000039d0f6a8 00000000024f08da
0x0000000039d0ee00: 00000000024f0790 0000000000000000
0x0000000039d0ee10: 0000000039d0f7b0 0000000039d0f6d0
0x0000000039d0ee20: 0000000039d0f470 0000000002ee65fe
0x0000000039d0ee30: 0000000002ee6450 0000000000000000
0x0000000039d0ee40: 0000000000000000 0000000039d0f470
0x0000000039d0ee50: 0000000022353000 0000000000000000
Instructions: (pc=0x0000000055ee9f91)
0x0000000055ee9f71: 24 68 03 00 00 48 8b 08 eb 13 48 8b 85 b8 05 00
0x0000000055ee9f81: 00 48 8b 48 08 48 8b 41 08 48 8b 48 18 48 8b 01
0x0000000055ee9f91: ff 90 a8 00 00 00 48 8b f8 4c 3b f8 74 2a 48 85
0x0000000055ee9fa1: c0 74 25 41 8b 16 41 3b 56 04 75 08 49 8b ce e8
Register to memory mapping:
RAX=0x0000000000000000 is an unknown value
RBX=0x0000000000000000 is an unknown value
RCX=0x0000000100014b38 is pointing into metadata
RDX=0x0000000002ee65fe is at entry_point+62 in (nmethod*)0x0000000002ee6450
RSP=0x0000000039d0ed60 is pointing into the stack for thread: 0x0000000022353000
RBP=0x0000000039d0ee60 is pointing into the stack for thread: 0x0000000022353000
RSI=0x0000000000000000 is an unknown value
RDI=0x00000000000003d8 is an unknown value
R8 =0x00000000024f0000 is an unknown value
R9 =0x0000000000000006 is an unknown value
R10=0x00007ff9b2291058 is an unknown value
R11=0x0000000039d0ed50 is pointing into the stack for thread: 0x0000000022353000
R12=0x0000000022353000 is a thread
R13=0x000000002237de00 is an unknown value
R14=0x0000000025253740 is an unknown value
R15=0x0000000000000000 is an unknown value
Stack: [0x0000000039c10000,0x0000000039d10000], sp=0x0000000039d0ed60, free space=1019k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x199f91]
C 0x0000000002ee667c
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
[error occurred during error reporting (printing Java stack), id 0xc0000005]
任何人都可以告诉我这个问题的原因在哪里或是什么,或者指出我可以阅读更多相关内容的正确方向吗?我尝试将 jvm.dll 路径添加到 JAVA_HOME 环境变量,从那时起就没有发生崩溃,但我不确定它是否已修复。
不可能说,异常堆栈中没有任何内容,您无法提供详细信息,并且相同的地址没有出现在谷歌搜索中。可能是 JVM 中的错误。由于您使用的是 2020 年 1 月 (8.0_241) 的 JDK 8 错误修复版本,因此最好更新到最新的 JDK 8 错误修复版本以查看是否修复了该问题。此时最新的是jdk8u422。您没有提供平台的详细信息,也没有提供为什么不能使用较新版本的 Java,但请注意,错误修复版本仍然是 JDK 8,而不是 JDK 21 等较新版本。