[英]JavaFX EXCEPTION_ACCESS_VIOLATION
我对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),并且尝试更新图形卡驱动程序。 确实启动了某个项目,但是只要我想显示一些“更复杂”的效果(即,将鼠标悬停在某个按钮上),就会遇到相同的异常。
从stacktrace来看,我相信它与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
感谢您的任何投入。
崩溃发生在C:\\Windows\\system32\\igdumdim64.dll
,偏移量为0xe5fe9
。
该库是英特尔高清显卡驱动程序的一部分。
这是一个快速提示,如何从崩溃日志中找到该提示。
# 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,我们可以将其反汇编并找出给定偏移量的确切函数。
PS
还有一个Windows特定的Java标志-XX:+CreateMinidumpOnCrash
,它有助于产生更有意义的崩溃转储以进行分析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.