我遇到了JavaFX桌面应用程序的问题,特别是3d渲染功能。 每次我尝试构建和启动JavaFX应用程序时,JVM都会出现错误,并且我会得到类似于以下错误的错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000000000000, pid=8440, tid=9008
#
# JRE version: Java(TM) SE Runtime Environment (7.0_51-b13) (build 1.7.0_51-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C 0x0000000000000000
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\apps\desktop\hs_err_pid8440.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
整个日志:http://pastebin.com/FC6NfVjF
我尝试了不同的java版本(1.7_51,1.7_60,以及1.8_5),我尝试更新显卡驱动程序。 有些项目确实推出了,但是一旦我想展示一些更复杂的项目,效果(即悬停按钮),我得到同样的例外。
从堆栈跟踪来看,我认为它与directX有关。
j com.sun.prism.d3d.D3DVertexBuffer.nDrawIndexedQuads(J[F[BI)I+0
j com.sun.prism.d3d.D3DVertexBuffer.drawQuads(I)V+13
j com.sun.prism.impl.VertexBuffer.flush()V+12
我在使用Windows 8.1和DirectX 11的机器上工作。可能它没有帮助,但在这里我也粘贴了DirectX诊断工具日志: http://pastebin.com/giN4AFv4
感谢您的任何意见。
答案 0 :(得分:2)
崩溃发生在C:\Windows\system32\igdumdim64.dll
内0xe5fe9
偏移
该库是Intel HD Graphics Driver的一部分。
以下是如何从崩溃日志中找到此内容的快速提示。
# Problematic frame:
# C 0x0000000000000000
零指令指针表示存在间接调用,目标地址恰好为NULL
。此调用的返回地址可能位于堆栈顶部。
Top of Stack: (sp=0x000000000ef4d398)
0x000000000ef4d398: 00007ffb308b5fe9 000000000e979800
00007ffb308b5fe9
是保存的返回地址。让我们找到它所属的范围。
Dynamic libraries:
...
0x00007ffb307d0000 - 0x00007ffb31019000 C:\Windows\system32\igdumdim64.dll
通过减去基址来查找库中的偏移量:
0x00007ffb308b5fe9 - 0x00007ffb307d0000 = 0xe5fe9
接下来,掌握了dll,我们可以对它进行反汇编并找出给定偏移处的确切函数。
P.S。
还有一个特定于Windows的Java标志-XX:+CreateMinidumpOnCrash
,有助于为分析生成更有意义的崩溃转储。