Sigar 1.6.4崩溃:EXCEPTION_ACCESS_VIOLATION

时间:2014-05-01 10:20:01

标签: vmware java sigar hyperic

我使用Sigar库获取Java并且我收到此错误:

  

Java运行时环境检测到致命错误:   pc = 0x0000000010014ed4,pid = 1560,tid = 4812

EXCEPTION_ACCESS_VIOLATION(0xc0000005)

Here您可以看到生成的错误日志。 (以及我的机器规格)

这在程序运行几个小时后随机发生。然后,它崩溃了,我不能再监视任何参数(cpu,ram,disk ...)。它非常烦人,使SIGAR完全没用,因为你不能相信它是否会崩溃。

我一直在阅读关于它的这两个主题,但似乎库的一个问题是没有提出适当的解决方案(并且图书馆看起来没有修复错误)

有一个人谈论如何解决64位in this answer,但该文件甚至无法下载。 (那里没有java/src文件夹)。

有关如何处理它的任何想法?它甚至可以修复吗?如果没有,你会建议我选择Sigar的哪些替代品?

如果这是相关的,这些是我在我的应用程序中使用的Sigar函数:

 - new Sigar();
 - Sigar.getProcCpu();
 - Sigar.getCpuList();

 - new ProcessFinder();
 - ProcessFinder.find();

 - new ProcCpu();
 - ProcCpu.gather();

 - new ProcMem();
 - ProcMem.gather();
 - ProcMem.getResident()

 - ProcCpu.getTotal();
 - ProcCpu.getLastTime();

 - Sigar.getMem();
 - Mem.getActualFree();
 - Mem.getActualUsed();
 - Mem.getFree();
 - Mem.getRam();
 - Mem.getTotal();
 - Mem.getUsed();
 - Mem.getUsedPercent();

 - new FileSystemUsage();
 - FileSystemUsage.getFree();
 - FileSystemUsage.getUsed();

1 个答案:

答案 0 :(得分:1)

  

关于如何处理它的任何想法?

错误转储中的线程堆栈跟踪如下:

Stack: [0x000000000d180000,0x000000000d280000],  sp=0x000000000d27f3c0,  free space=1020k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [sigar-amd64-winnt.dll+0x14ed4]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J  org.hyperic.sigar.ptql.SigarProcessQuery.find(Lorg/hyperic/sigar/Sigar;)[J
J  com.hpuk.sentinel.monitor.Monitor.getData()Ljava/util/List;
J  com.hpuk.schedule.Scheduler.run()V
v  ~StubRoutines::call_stub

这似乎是说问题发生在SIGAR本机库中。

你能做什么?

  • 您可以查看其他人是否报告了此问题。 (您发现的SIGAR-192问题看起来与您的问题非常不同。)

  • 您可以报告问题并等待维护人员是否可以提供解决方案。 (但是像“SIGAR无用”这样的煽动性评论加剧bug报告是一个非常糟糕的主意......)

  • 您可以升级到更高版本的SIGAR,看看是否有帮助。 (目前,这是1.7 ......尚未标记为“稳定”。)

  • 您可以下载SIGAR源代码并尝试自行调试问题。

  • 您可以联系VMWare并询问他们是否可以获得支持合同。似乎Hyperic现在是VMWare产品......

  • 或者......你可以放弃。

  

它是否可以修复?

当然是......但你可能需要花费大量精力来修复它。