JAVA JNA:EXCEPTION_ACCESS_VIOLATION(0xc0000005)在多次成功调用相同的本机C .dll库之后

时间:2016-01-27 13:11:26

标签: java exception shared-libraries jna jvm-crash

我正在使用基于java的建模平台,我正在尝试解决常微分方程(ODE)。我正在使用的平台提供了2个包装函数:

  1. 提供对任何数值解算器的集成访问 apache.commons(都是非正式解决者)
  2. 提供对非僵硬求解器的本机访问(即CVODE 来自SUNDIALS软件包)用2个共享库(.dll)编写的C语言
  3. 虽然第一个选项没有提供任何困难并按预期运行,但第二个选项导致EXCEPTION_ACCESS_VIOLATION(0xc0000005)崩溃在已经运行几次成功调用本机解算器之后(完整错误日志太长)所以你可以找到它here

    我创建了一个3个简单ODE的小例子,在达到阈值后将其重置为原始状态。输出正确绘制在这里: simple ODE

    虽然第一个选项继续运行,直到我手动停止该过程,但是在一个明显随机的集成步骤之后,本机解算器崩溃了。

    我真的需要成功访问这个原生求解器,因为我有一个更复杂的问题需要它提供的僵硬求解器。

    我还会提供明确导致

    的原因列表
    • 没有硬件故障(已确认内存确认此情况)
    • 我尝试在eclipse中运行平台,没有 eclipse,所以我不认为这是eclipse
    • C库被广泛使用并且绝对正确
    • 我的.dll库,我的java和我的操作系统都是64位
    • 内存不足(我尝试了3 Gb和14 Gb,都崩溃了)
    遗憾的是,我几乎不可能提供可重现的示例代码,因为建模平台(即GroIMP)以及本机解算器库非常复杂(而不是我自己的代码)。

    问题显然是可能导致这些崩溃的原因以及我可以尝试解决这些问题或以更详细和建设性的方式调查问题。

0 个答案:

没有答案