Sigar 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();

person Alvaro    schedule 01.05.2014    source источник


Ответы (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...

  • Или... ты мог бы сдаться.

Это хоть поправимо?

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

person Stephen C    schedule 01.05.2014
comment
Я использую последнюю версию 1.6.4 (от 2010 года). Я также сообщил об этом на их форуме разработчиков... Знаете ли вы какую-либо другую альтернативу Sigar? - person Alvaro; 01.05.2014
comment
Я пробовал, но, кажется, их немного... Мне просто интересно, пробовали ли вы что-нибудь с хорошими результатами. - person Alvaro; 01.05.2014
comment
@Alvaro - Каким было первое слово моего последнего комментария? - person Stephen C; 01.05.2014
comment
Я не переспрашивал, просто уточнил свой ответ. - person Alvaro; 01.05.2014