Java Runtime Environment使用JOGL获取程序的“致命错误SIGSEGV”

问题描述 投票:2回答:3

我试图通过Eclipse运行Java程序。每当我尝试运行时,这就是我得到的:

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行,所以我认为发布整个内容可能没那么有用,我不确定哪些部分会是什么,但是如果有人能告诉我应该包含的内容,我可以做所以。

java segmentation-fault jogl sigsegv jvm-crash
3个回答
0
投票

如果您在Linux系统上使用JOGL,那么几乎可以肯定问题出在那里。 3D图形在大多数Linux系统上都不是很强大,JOGL强调3D图形系统,因为它对它们做了不寻常的事情,主要与多线程有关。

大多数情况下,问题在于过时或不符合标准的显示驱动程序。确保你的系统有最新的驱动程序,并使用专有的驱动程序,而不是安装附带的驱动程序,而不是任何开源驱动程序 - 抱歉,但这是一个向后了解硬件(如图形卡提供商)的情况提高质量和性能。这通常可以解决问题。

如果这没有帮助你将不得不做一些激烈的事情。通常禁用硬件图形加速会修复它,但当然会失去性能。日志文件应该为您提供完整的堆栈跟踪,如果您熟悉设备驱动程序编码并拥有驱动程序源,这可能很有用。或者尝试使用不同的显卡 - 如果你最近没有升级你的显卡,那么新显卡便宜。

我花了几个月的时间试图在一般情况下在Linux上运行的JOGL应用程序中追踪这样的错误,我仍然发现窗口会空白的安装。祝好运。


1
投票

这看起来像是某些C代码中的错误。鉴于它发生在两个不同的JVM上,我倾向于怀疑原生扩展,也许是JOGL。

您是否检查了报告指向的文件:hs_err_pid2750.log?查看它然后搜索其中的一些内容通常可以指向具有相同问题的其他人,有时还会修复。


0
投票

正如其他海报所说,JOGL程序中的HotSpot错误通常可以通过将您的显卡驱动程序更新到最新版本来修复。

但是,如果您正在使用新的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错误。

© www.soinside.com 2019 - 2024. All rights reserved.