java - JNA 导致 EXCEPTION_ACCESS_VIOLATION?

标签 java java-native-interface awt jna

我的 Java UI 意外终止并转储了 hs_err_pid 文件。该文件显示“崩溃发生在 Java 虚拟机之外的 native 代码中”。 JNA 是我们使用的唯一 native 代码。有谁知道任何 JNA 版本可能导致此问题的任何已知问题或错误。我已经包含了下面错误文件中的一些内容。

An unexpected error has been detected by Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d02bcbd, pid=312, tid=3616

 Java VM: Java HotSpot(TM) Client VM (11.0-b16 mixed mode, sharing windows-x86)<br>
 Problematic frame:
 C  [awt.dll+0x2bcbd]

 If you would like to submit a bug report, please visit:
   http://java.sun.com/webapps/bugreport/crash.jsp
 The crash happened outside the Java Virtual Machine in native code.
 See problematic frame for where to report the bug.

Current thread (0x02acf000):  JavaThread "AWT-Windows" daemon [_thread_in_native, id=3616, stack(0x02eb0000,0x02f00000)]

siginfo: ExceptionCode=0xc0000005, writing address 0xe2789280


Registers:
EAX=0x234f099c, EBX=0x00001400, ECX=0x00000100, EDX=0xe2789280
ESP=0x02eff4a4, EBP=0x00000400, ESI=0x234f099c, EDI=0xe2789280
EIP=0x6d02bcbd, EFLAGS=0x00010206

Top of Stack: (sp=0x02eff4a4)
0x02eff4a4:   02eff500 00000100 02eff584 00000100
0x02eff4b4:   6d0a5697 00000400 00000400 00000100
0x02eff4c4:   00000100 02eff700 02eff500 00000000
0x02eff4d4:   00000000 00000100 041ac3a0 00000100
0x02eff4e4:   00182620 00000400 e2789280 00000000
0x02eff4f4:   00000000 00000100 00000100 00000000
0x02eff504:   00000000 00000100 00000100 00000000
0x02eff514:   00000000 00000004 00000400 00000000

Instructions: (pc=0x6d02bcbd)
0x6d02bcad:   00 00 00 8b 4c 24 14 8b e9 c1 e9 02 8b f0 8b fa
0x6d02bcbd:   f3 a5 8b cd 83 e1 03 f3 a4 8b 74 24 18 8b 4c 24

Stack: [0x02eb0000,0x02f00000],  sp=0x02eff4a4,  free space=317k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [awt.dll+0x2bcbd]

[error occurred during error reporting (printing native stack), id 0xc0000005]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  sun.awt.windows.WToolkit.eventLoop()V+0
j  sun.awt.windows.WToolkit.run()V+69
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub

最佳答案

我刚刚遇到了同样的错误,这显然是 1.6.0_11 中新的 Direct3d 加速 Java2d 功能中的一个错误,该错误发生在视频 RAM 较低的机器上。 如果您使用 -Dsun.java2d.d3d=false 启动应用程序,它应该会再次工作。 跟踪此问题的 sun bug 如下:https://bugs.java.com/bugdatabase/view_bug?bug_id=6788497

关于java - JNA 导致 EXCEPTION_ACCESS_VIOLATION?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/379574/

相关文章:

java - 测试 spring security oauth2login 启用的应用程序抛出 IllegalArgumentException : clientRegistrationRepository cannot be null

java - 动态更改 JSplitPane 中 setDividerSize 的大小

java - 测试 web 层 Spring Boot

java - 为什么 Player.gamesCompleted 属性永远不会更新?

java-native-interface - jdk1.0 为何缺乏原生代码和 Java 代码之间的清晰分离?

rust - Rust 代码如何检查调用 Java 代码抛出的异常?

Windows 上的 Java JNI 和依赖库

java - 将 RHEL 从 7.3 升级到 7.4 : ArrayIndexOutOfBoundsException in sun. font.CompositeStrike.getStrikeForSlot

java - 使用 ImageIO 处理奇怪的 png-8

java - 使用sqlite数据库