2014-07-14 4 views
0

JavaFX 데스크톱 응용 프로그램, 특히 3D 렌더링 기능에 문제가 있습니다. 내가 자바 FX 애플리케이션, JVM의 crshes을 구축하고 실행하려고 내가 하나를 다음과 비슷한 오류를 얻을 때마다 :JavaFX EXCEPTION_ACCESS_VIOLATION

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

전체 로그 : 나는 다른 자바 버전 (1.7_51, 1.7_60을 시도

http://pastebin.com/FC6NfVjF, 뿐만 아니라 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 

나는 아마 도움이되지 않습니다 윈도우 8.1 및 DirectX 11과 컴퓨터에서 일하고 있어요, 그러나 여기에서 나는 또한 DirectX 진단 도구 로그를 붙여 해요 : 모든 입력에 대한 http://pastebin.com/giN4AFv4

감사합니다.

+1

[MCVE] (http://stackoverflow.com/help/mcve)를 만들어야합니다. 로그만으로 누군가가 당신을 도울 수 없을 것입니다. – Mansueli

+0

충돌 로그에서 찾을 수있는 것은 applicated가 0xe5fe9 오프셋에서 Intel HD Graphics Driver의 일부인 C : \ Windows \ system32 \ igdumdim64.dll 라이브러리 내부에서 충돌 한 것입니다. 이 특정 라이브러리가 없어도 정확한 기능을 지정할 수는 없지만 어쨌든 거의 도움이되지 않습니다. 분석을 위해보다 의미있는 크래시 덤프를 만드는 데 도움이되는 Windows 관련 Java 플래그'-XX : + CreateMinidumpOnCrash'가 있습니다. – apangin

+0

** 덕분에 ** apangin ** 덕분에 해결책을 찾았습니다. 에이서가 내 HD4400과 완전히 호환되지 않는 일부 잘못된 인텔 HD 드라이버를 넣었습니다. 이전 버전의 HD 드라이버를 제거하고 인텔 사이트에서 다운로드 한 CPU 용으로 최신 버전을 설치하면됩니다. ** apangin ** - 여기에 대답하면 투표 할 것입니다. ** @ Kyllopardiun ** - 여기 MCV 예제는 무엇입니까? 붙여 넣을 수있는 코드 예제가 없었습니다. 모든 것이 로그에있었습니다. – ember

답변

2

에서 C:\Windows\system32\igdumdim64.dll의 충돌이 발생했습니다.
이 라이브러리는 Intel HD 그래픽 드라이버의 일부입니다.

다음은 충돌 로그에서이를 찾는 빠른 방법입니다.

# Problematic frame: 
# C 0x0000000000000000 

제로 명령 포인터는 간접 호출이 있었 수단, 상기 타겟 어드레스는 NULL를 우연히. 이 호출에 대한 반송 주소는 스택 맨 위에있을 가능성이 큽니다.

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

00007ffb308b5fe9은 저장된 반송 주소입니다. 그것이 속한 범위를 찾아 보겠습니다.

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

은 기본 주소를 차감하여 라이브러리의 오프셋 (offset) 찾기 :
0x00007ffb308b5fe9 - 0x00007ffb307d0000 = 0xe5fe9

다음으로, 손에 DLL을 가지고, 우리는 그것을 분해와의 정확한 기능을 알아낼 수 주어진 오프셋.

P.S.
분석을 위해보다 의미있는 크래시 덤프를 생성하는 데 도움이되는 Windows 관련 Java 플래그 -XX:+CreateMinidumpOnCrash도 있습니다.