Сигар 1.6.4 сбой: EXCEPTION_ACCESS_VIOLATION

Я использую библиотеку Sigar для Java и получаю эту ошибку:

Фатальная ошибка была обнаружена средой выполнения Java: EXCEPTION_ACCESS_VIOLATION (0xc0000005) при pc=0x0000000010014ed4, pid=1560, tid=4812

Здесь вы можете увидеть сгенерированный журнал ошибок. (А также мои технические характеристики машины)

Это происходит случайным образом после запуска программы в течение нескольких часов. Затем происходит сбой, и я больше не могу контролировать ни один параметр (процессор, оперативная память, диск...). Это так раздражает и делает SIGAR совершенно бесполезным, так как вы не можете доверять тому, произойдет ли это сбой или нет.

Я читал об этом две темы, но, похоже, это проблема библиотеки, и не было предложено правильных решений (и библиотека, похоже, не исправила ошибку).

В этом ответе есть парень, который говорит о том, как решить его за 64 бита, но этот файл даже недоступен для скачивания. (нет никаких 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 ответ

Есть идеи о том, как с этим бороться?

Трассировка стека потоков из дампа ошибок выглядит следующим образом:

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 бесполезен" - это действительно плохая идея...)

  • Вы можете перейти на более позднюю версию SIGAR и посмотреть, поможет ли это. (В настоящее время это 1,7 ... что еще не помечено как "стабильное".)

  • Вы можете загрузить исходный код SIGAR и попытаться решить проблему самостоятельно.

  • Вы можете связаться с VMWare и спросить их, можете ли вы получить контракт на поддержку. Кажется, что Hyperic теперь является продуктом VMWare...

  • Или... ты можешь сдаться.

Это даже поправимо?

Конечно, это... но вам может потребоваться приложить значительные усилия, чтобы это исправить.

Другие вопросы по тегам