![](/img/trans.png)
[英]A fatal error has been detected by the Java Runtime Environment with LeapMotion Project
[英]Fatal error detected by Java Runtime Environment by a class of a project
很抱歉打扰,但我在使用 Java 方面还是个新手。 我创建了一个包含多个类的项目,所有类都运行良好,但是自从我今天再次启动算法后,我收到了此错误消息。
我可以找到错误,这是由项目的一个 class 引起的,但我显然不知道问题出在哪里。 我希望有人能够帮助我。
我真的很期待帮助。 非常感谢。
Java 运行时环境检测到一个致命错误:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) 在 pc=0x0000000064e7b23f,pid=13200,tid=0x00000000000063bc
JRE版本:Java(TM)SE运行时环境(8.0_241-B07)(构建1.8.0_241-B07)ZD523878880E1EA228172D3759213759213819Z VM:框架:V [jvm.dll+0x4cb23f]
无法写入核心转储。 默认情况下,在 Windows 的客户端版本上未启用小型转储
包含更多信息的错误报告文件保存为:C:\Users\marti\eclipse-workspace\IGMOTaillardLocNew\hs_err_pid13200.log
编译器回放数据保存为:C:\Users\marti\eclipse-workspace\IGMOTaillardLocNew\replay_pid13200.log
如果您想提交错误报告,请访问: http://bugreport.java.com/bugreport/crash.jsp
--------------- T H R E A D ---------------
Current thread (0x0000000019cef000): JavaThread "C2 CompilerThread2"
daemon [_thread_in_native, id=25532,
stack(0x000000001a6e0000,0x000000001a7e0000)]
siginfo: ExceptionCode=0xc0000005, reading address 0x0000000000000008
Registers:
RAX=0x0000000000000000, RBX=0x0000000000000000, RCX=0x000000001ca6b570,
RDX=0x0000000000004000
RSP=0x000000001a7db520, RBP=0x000000001b079d30, RSI=0x000000001ca6b570,
RDI=0x000000001a7dba60
R8 =0x0000000000000000, R9 =0x000000001e07bfc0, R10=0x000000001a7dba60,
R11=0x000000001afe4df0
R12=0x000000001acd5a80, R13=0x000000001ce513d8, R14=0x000000001a7db608,
R15=0x000000001a7db628
RIP=0x0000000064e7b23f, EFLAGS=0x0000000000010206
Top of Stack: (sp=0x000000001a7db520)
0x000000001a7db520: 000000001b07a038 000000001b079d30
0x000000001a7db530: 000000001dd7e290 000000001a7dba60
0x000000001a7db540: 000000001b079d30 000000001a7db678
0x000000001a7db550: 000000001a7db6d0 0000000064e7ca69
0x000000001a7db560: 000000001b07a038 00000000000003d3
0x000000001a7db570: 0000000000000001 0000000019cd9dd0
0x000000001a7db580: 000000001a7dc438 0000000064ec7490
0x000000001a7db590: 000000001d6d8500 0000000019cd9dd0
0x000000001a7db5a0: 0000000019d16cc0 000000001a7db6d0
0x000000001a7db5b0: 0000000019cd9dd0 000000000000002b
0x000000001a7db5c0: 000000001a7dba60 0000000064e7e813
0x000000001a7db5d0: 000000001a7dba60 0000000000000001
0x000000001a7db5e0: 0000000000000001 000000001a7db678
0x000000001a7db5f0: 000000001d6d8550 000000001d6e04e8
0x000000001a7db600: 0000000000247c80 0000000019cd9dd0
0x000000001a7db610: 0000000000000400 000000001b11bbf0
Instructions: (pc=0x0000000064e7b23f)
0x0000000064e7b21f: 4c 89 64 24 50 4c 8b e0 4c 3b e8 0f 84 4f 01 00
0x0000000064e7b22f: 00 44 8b 43 28 4c 8b 8f f8 09 00 00 4b 8b 1c c1
0x0000000064e7b23f: 48 8b 43 08 48 83 38 00 75 2a 8b 57 28 0f 1f 40
0x0000000064e7b24f: 00 8b 43 28 3b c2 73 0c 8b c8 48 8b 47 30 48 8b
Register to memory mapping:
RAX=0x0000000000000000 is an unknown value
RBX=0x0000000000000000 is an unknown value
RCX=0x000000001ca6b570 is an unknown value
RDX=0x0000000000004000 is an unknown value
RSP=0x000000001a7db520 is pointing into the stack for thread:
0x0000000019cef000
RBP=0x000000001b079d30 is an unknown value
RSI=0x000000001ca6b570 is an unknown value
RDI=0x000000001a7dba60 is pointing into the stack for thread:
0x0000000019cef000
R8 =0x0000000000000000 is an unknown value
R9 =0x000000001e07bfc0 is an unknown value
R10=0x000000001a7dba60 is pointing into the stack for thread:
0x0000000019cef000
R11=0x000000001afe4df0 is an unknown value
R12=0x000000001acd5a80 is an unknown value
R13=0x000000001ce513d8 is an unknown value
R14=0x000000001a7db608 is pointing into the stack for thread:
0x0000000019cef000
R15=0x000000001a7db628 is pointing into the stack for thread:
0x0000000019cef000
Stack: [0x000000001a6e0000,0x000000001a7e0000], sp=0x000000001a7db520,
free space=1005k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native
code)
V [jvm.dll+0x4cb23f]
V [jvm.dll+0x4cca69]
V [jvm.dll+0x4ce813]
V [jvm.dll+0x47e1e0]
V [jvm.dll+0x47f013]
V [jvm.dll+0x4618a2]
V [jvm.dll+0xa6a62]
V [jvm.dll+0xa73af]
V [jvm.dll+0x2467ef]
V [jvm.dll+0x29fd2a]
C [msvcr100.dll+0x21d9f]
C [msvcr100.dll+0x21e3b]
C [KERNEL32.DLL+0x17bd4]
C [ntdll.dll+0x6ced1]
Current CompileTask:
C2: 1511 309 4
InsertionNeighborhoodLocNew::InsertionNeighborhood (2858 bytes)
for(int x=0; x<nFac; x++) {
for(int y=0; y<nJob; y++) {
if(ZZ[x][y][0]==0 && y!=0) {
flag=y-1;
ZZf[0][x]=ZZ[x][flag][nMachine-1];
merkerZZf[0][x]=ZZ[x][flag][nMachine-1];
break;
}
else{
if(ZZ[x][y][0]==0 && y==0) {
ZZf[0][x]=0;
merkerZZf[0][x]=0;
}
else {
if(ZZ[x][nJob-1][0]!=0) {
flag=nJob-1;
ZZf[0][x]=ZZ[x][flag][nMachine-1];
merkerZZf[0][x]=ZZ[x][flag][nMachine-1];
}
}
}
}
}
使用此代码,我基本上是在尝试区分与我正在处理的问题相关的情况。 我意识到,因为我删除了带有“merkerZZf”的行,所以我没有导致错误。 我其实不知道为什么。
这是 JVM 中的一个致命错误,这不是你的错。 当 JVM 试图将您的InsertionNeighbourhood
代码编译为本机代码时,就会发生这种情况。 您可以尝试更改您的代码(修改结构但保持逻辑相同),以便C2
编译器(见下文)可能不会遇到这种情况,但这也是不应该首先发生的事情。
它看起来是这个 bug的一个案例,因为你显然有更简单的代码,你应该提交一个 bug 报告。 不要丢失您当前的代码,即导致错误的代码。
C2
编译器(除了C1
之外)是 JVM 的内部优化编译器,负责分析正在运行的字节码,并为其确定最佳的本机代码。 它还可以丢弃以前编译的代码并重新编译它,这对性能很重要。 假设(简化)您的代码首先处理只有0
和1
的数据,然后代码被编译为有效的东西。 稍后您会得到0-1000000
范围内的数据,并且编译后的代码没有达到应有的效果,因此 JVM 将其丢弃并重新编译以更有效地处理该数据。
不幸的是,与任何代码一样, JVM也不是没有错误的。 在这种情况下,编译会导致致命错误和错误。 由于编译器会根据代码、数据和其他事物执行不同的操作,因此稍微更改代码可能会导致错误出现/消失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.