2

我正在尝试通过 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 行长,所以我认为发布整个内容可能不是那么有用,而且我不确定哪些部分会是什么,但如果有人可以让我知道我应该包括什么,我可以做所以。

4

3 回答 3

1

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

您是否也检查了报告指向的文件:hs_err_pid2750.log?查看这些内容然后搜索其中的一些内容通常可以将您指向其他有相同问题的人,有时甚至可以解决问题。

于 2010-11-09T15:35:42.123 回答
0

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

大多数情况下,问题出在过时或不合格的显示驱动程序上。确保您的系统具有最新的驱动程序,并使用专有驱动程序,而不是安装附带的驱动程序,而不是任何开源驱动程序 - 对不起,但这是一种真正了解硬件的情况(就像显卡提供商所做的那样)提高质量和性能。这通常会解决问题。

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

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

于 2010-11-09T16:14:58.913 回答
0

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

但是,如果您使用的是新的 JOGL 2.0 测试版,问题可能是您没有调用 GLProfile.initSingleton(),或者您没有足够早地调用它(它必须在任何 X Windows 调用之前) .

I've got a tutorial at http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ that shows how to create a simple JOGL 2.0 program. I've tested this program on CentOS 5.4 and it works correctly. Back before I had GLProfile.initSingleton() in the right place in this tutorial, I saw the same SIGSEGV error as you.

于 2010-11-09T17:03:21.427 回答