Сбой Redhawk с ошибкой Java - Убит по сигналу 6, SIGABRT
Centos 6,6
Redhawk 1.10
Я могу выполнить серию операций (запрограммировать IP-адрес USRP) в Redhawk, которые неоднократно вызывают сбой программы со следующей ошибкой:
Источник: java-1.7.0-openjdk
Проблема: Процесс /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64/jre/bin/java был прерван по сигналу 6 (SIGABRT)
Есть идеи, как это предотвратить?
Кроме того, я очень плохо знаком с Redhawk и Linux в целом, поэтому, пожалуйста, ELI5.
2 ответа
На кого-то способ умнее меня на эту тему:
Это проблема, которая только что появилась в выпуске CentOS6.6, поскольку он использует более новую версию gtk2, чем CentOS6.5. Eclipse обнаруживает это и ошибочно полагает, что может использовать графический API cairo, который либо недоступен, либо отсутствует в ожидаемой версии. На самом деле это ошибка в версии Eclipse, используемой в IDE REDHAWK серии v1.10 и v1.9. Информацию о проблеме можно найти на этом форуме затмения. С тех пор Eclipse устранил проблему в своей последней базе кода.
Самым простым исправлением для пользователей 1.10 и 1.9 является применение исправления, упомянутого в сообщении на форуме. Перейдите в каталог, в котором находится исполняемый файл eclipse (исполняемый файл REDHAWK IDE), и должен быть файл конфигурации с именем "eclipse.ini". Добавьте следующий параметр в список объявленных опций:
-Dorg.eclipse.swt.internal.gtk.cairoGraphics = ложь
Это отключит использование графики Каира, которая не использовалась в первую очередь.
Я обнаружил, что эта ошибка произошла, потому что я выполнял удаленную отладку процесса, который хотел создать два отдельных экземпляра JVM. Тот, который выполнил тестовый бегун, и тот, который выполнил реальный тест. Если вы запустили программу с помощью:
export _JAVA_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7002"
Оба экземпляра пытаются использовать порт 7002, и прерывание сигнала появляется, потому что 7002 используется для второго экземпляра.
Вместо этого вы можете использовать:
export _JAVA_OPTIONS="agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7002"
Если для параметра suspend установить значение yes, вы запретите одновременную работу экземпляров. Хотя вы должны не забыть подключить удаленный отладчик дважды, чтобы заставить работать отдельные экземпляры.