Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaFX EXCEPTION_ACCESS_VIOLATION

I have a problem with JavaFX desktop application, specifically with 3d rendering functionalities. Every time I try to build and launch JavaFX application, JVM crshes and I get error similiar to following one:

#
# 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.
#

Entire log: http://pastebin.com/FC6NfVjF

I tried different java version (1.7_51, 1.7_60, as well as 1.8_5), I tried updating graphic card drivers. Some project does launch, but as soon as I want to display some 'more complicated' effects (i.e. hovering a button), I get the same exception.

Judging from the stacktrace, I believe it has something to do with 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

I'm working on machine with Windows 8.1 and DirectX 11. Probably it won't help, but here I'm also pasting DirectX Diagnostic Tool log: http://pastebin.com/giN4AFv4

Thanks for any input.

like image 636
ember Avatar asked Dec 26 '22 06:12

ember


1 Answers

The crash has happened inside C:\Windows\system32\igdumdim64.dll at offset 0xe5fe9.
This library is a part of Intel HD Graphics Driver.

Here is a quick tip how to find this from the crash log.

# Problematic frame:
# C  0x0000000000000000

Zero instruction pointer means there was an indirect call, and the target address happened to be NULL. The return address for this call is likely to be on the top of stack.

Top of Stack: (sp=0x000000000ef4d398)
0x000000000ef4d398:   00007ffb308b5fe9 000000000e979800

00007ffb308b5fe9 is the saved return address. Let's find the range it belongs to.

Dynamic libraries:
...
0x00007ffb307d0000 - 0x00007ffb31019000      C:\Windows\system32\igdumdim64.dll

Find the offset in the library by subtracting the base address:
0x00007ffb308b5fe9 - 0x00007ffb307d0000 = 0xe5fe9

Next, having the dll in hand, we can disassemble it and figure out the exact function at the given offset.

P.S.
There is also a Windows-specific Java flag -XX:+CreateMinidumpOnCrash that helps to produce a more meaningful crash dump for analysis.

like image 117
apangin Avatar answered Dec 28 '22 07:12

apangin