Java Runtime Environment получает "фатальную ошибку SIGSEGV" для программы, использующей JOGL - PullRequest
2 голосов
/ 09 ноября 2010

Я пытаюсь запустить программу на Java через Eclipse. Всякий раз, когда я пытаюсь запустить вещь, вот что я получаю:

Info: XInitThreads() called for concurrent Thread support
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000010f1, pid=2750, tid=1923033968
#
# JRE version: 6.0_22-b04
# Java VM: Java HotSpot(TM) Server VM (17.1-b03 mixed mode linux-x86 )
# Problematic frame:
# C  0x000010f1
#
# An error report file with more information is saved as:
# /home/anjruu/ragamuffin/trunk/pipeline/hs_err_pid2750.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp

Я не получаю никаких ошибок при сборке, и пробовал использовать как Java 6 OpenJDK, так и Sun jdk1.6.0_22, оба ведут себя одинаково. Я использую систему Ubuntu 10.10. Программа использует JOGL (Java OpenGL), это уместно?

Файл журнала имеет длину около 400 строк, поэтому я полагаю, что публикация всей статьи не очень полезна, и я не уверен, какие будут разделы, но если кто-то может сообщить мне, что я должен включить, Я могу сделать это.

Ответы [ 3 ]

1 голос
/ 09 ноября 2010

Это похоже на ошибку в каком-то C-коде. Учитывая, что это произошло на двух разных JVM, я склонен подозревать нативные расширения, возможно, JOGL.

Вы уже проверили файл, на который указывает отчет: hs_err_pid2750.log? Если вы посмотрите на это, а затем выполните поиск некоторых из этих материалов, вы можете указать другим людям с той же проблемой, а иногда и с исправлением.

0 голосов
/ 09 ноября 2010

Как говорили другие авторы, ошибки HotSpot в программах JOGL часто можно исправить, обновив драйверы графической карты до последней версии.

Однако, если вы используете новую бета-версию JOGL 2.0, проблема может заключаться в том, что вы либо не вызываете GLProfile.initSingleton (), либо недостаточно рано (это должно быть до любого X Звонки Windows).

У меня есть учебник по http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/, который показывает, как создать простую программу на JOGL 2.0. Я протестировал эту программу на CentOS 5.4, и она работает правильно. Еще до того, как GLProfile.initSingleton () оказался в нужном месте в этом уроке, я обнаружил ту же ошибку SIGSEGV, что и вы.

0 голосов
/ 09 ноября 2010

Если вы используете JOGL в системе Linux, то почти наверняка проблема в этом.Трехмерная графика не очень надежна в большинстве систем Linux, и JOGL сильно подчеркивает трехмерные графические системы, потому что она делает с ними необычные вещи, в основном связанные с многопоточностью.

В большинстве случаев проблема связана с устаревшими или несоответствующими драйверами дисплея.Убедитесь, что в вашей системе установлены последние версии драйверов, и используйте проприетарные драйверы, а не те, которые поставляются с установкой, а не драйверы с открытым исходным кодом - извините, но это тот случай, когда знание аппаратного обеспечения в обратном направлении (как это делают поставщики видеокарт) действительноулучшает качество и производительность.Обычно это решает проблему.

Если это не поможет, вам придется сделать что-то радикальное.Часто отключение аппаратного ускорения графики исправит это, но с потерей производительности, конечно.Файл журнала должен дать вам полную трассировку стека, что может быть полезно, если вы знакомы с кодированием драйверов устройств и имеете источник драйверов.В качестве альтернативы попробуйте использовать другую видеокарту - новые стоят дешево, если вы недавно не обновляли свою.

Я потратил месяцы своей жизни, пытаясь отследить подобные ошибки в приложении JOGL, работающем на Linux в общем случае, и я все еще находил установки, в которых окно было бы пустым.Удачи.

...