当前位置: 首页 > 知识库问答 >
问题:

加载jni时jre崩溃

李永寿
2023-03-14

我已经编译了一个用于jni的测试dll。除了#include之外,它实际上完全是空的

这是加载库的类:

static
{
    final File f= new File(new File("res"), "mandc.dll");
    System.out.println(f.exists());
    System.load(f.getAbsolutePath());
    System.out.println("Loaded!");
}

//  public static native long mand(final double cx, final double cy,
//          final double jx, final double jy, long iter);

public static native void mand();

true是最后打印的内容,证明错误在true和loaded!之间!。如果我在eclipse中运行,会打印两条错误消息,但互联网不知道它们是什么。

信息:

2 [main] javaw <random number here> exception::handle: Exception: STATUS_STACK_OVERFLOW
667 [main] javaw <random number here> open_stackdumpfile: Dumping stack trace to javaw.exe.stackdump

堆栈转储是无信息的。

Exception: STATUS_STACK_OVERFLOW at eip=61157C62
eax=0001C038 ebx=49E0834C ecx=49DE2ABC edx=49E27DB4 esi=49E07B2C edi=49E27B34
ebp=49E07ACC esp=49E07AB4 program=C:\Program Files\Java\jre7\bin\javaw.exe, pid 2688, thread main
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace:
Frame     Function  Args
49E07ACC  61157C62  (49E2D000, 49E27B3A, 49E27DB4, 00000008)
49E07AFC  6106C0B5  (49E27B3A, 49E27D78, 00000008, 49E27B2C)
49E27B4C  6106C6D1  (49E27B70, 00000C90, 00000000, 49E27DB4)
49E27DEC  6100584E  (49E27EBC, 611FBAF0, 611FBAEC, 49E27E2C)
49E27E3C  61005D28  (49E27FC3, 611FBAF0, 611FBAEC, 00000001)
49E2801C  61006F07  (00000000, 49E28058, 61006990, 49E2B268)
End of stack trace

当我在维基百科页面上运行示例时,实验也失败了。它以同样的方式失败。

共有1个答案

吴欣然
2023-03-14

问题已修复。我将工具链从cygwin gcc切换到mingw gcc。为了支持这一点,我不得不从cygwin安装程序中安装额外的mingw软件包。

我猜cygwin与java不兼容。最好是更好的错误消息

 类似资料:
  • 我正在尝试修复崩溃,例如: 1: 2: 三: 我已经复习了IndirectReferenceTable()的源代码https://android.googlesource.com/platform/art//kitkat dev/runtime/indirect\u reference\u表。cc),它似乎因为表溢出而崩溃。 据我所知,我正在正确删除所有本地引用。 问题是否可能与当地参考文献无关?

  • 我的Android应用在使用时崩溃 这是我收到的唯一明显的错误消息: 无法将堆栈跟踪写入/data/anr/跟踪。txt(6738中的5571):没有这样的文件或目录 libMySharedLib.so 是从 ndk-build 生成的。我正在使用powerVR SDK,因此我假设这个库是事先在内部加载的。 如果我将我的代码分离到一个不同的共享库中,我可以让它工作,但这违背了我的需要(所有数据、指

  • 希望你做得很好。 我有一个C语言的JNI实现,其中一个C函数连接到当前JVM线程并回调一个Java方法,这实际上是在attachCurrentThread()函数调用时使JVM崩溃。我的实现基于链接中给出的答案,保持对JNIEnv环境的全局引用 线程创建部分,它将侦听套接字连接以接受事件并注入GetEvent函数。 回调函数 在接收到事件时执行GetEvent()后,我的JVM在AttachMon

  • 我试图为BlackBerry开发安装“BlackBerry_jde_pluginfull_2.0.0_Indigo”,但是当我试图通过eclise打开它时,它弹出了“Failed to load JNI共享库C:\Program Files\java\jdk\1.7.0_45\bin...\jre\bin\server\jvm.dll”,并且没有打开Eclipse。我已经安装了Java7更新45(

  • 我们正在使用Tess4J/Tesseract在webapp上执行OCR。在Windows上一切正常,但当部署在Linux机器(CentOS 6.8)上时,程序崩溃并自动杀死Apache tomcat服务器。 我们读取了多个文件(不同的文件)simultaneously.if我们运行OCR它运行大约1分钟后它通过致命错误。你能建议如何解决吗? Java运行时环境检测到致命错误: 在pc=0x0000