调试“安全点”错误 - 需要理论上还是实用的来调试JVM崩溃?

时间:2012-06-06 02:52:39

标签: java linux amazon-web-services ning

我们在AWS上运行的Ubuntu服务器上发生了令人难以置信的jvm崩溃。

  • 我们的JVM在抓取几个网页时崩溃了。

  • 崩溃发生在“safepoint”cpp模块的第308行。在发生gauranteeArmed == 0声明的阶段。

  • 我们的系统管理员告知,在崩溃时,JVM会创建大量线程。

  • 我们没有在其他Linux或OSX框中复制此错误。

  • 我们使用Ning库来抓取一些 网页。

相关帖子

在这些帖子的每个帖子中都观察到“安全点”相关的崩溃,这种崩溃来自“无处”。最有趣的是,上面的第一篇文章实际上在网络相关事件中表现出JVM崩溃。

这个错误的神秘性使我相信存在一个与线程创建和调度相关的错误,这个错误特定于我们当前版本的Ubuntu关于java调用它的一些并发特性或一些底层库的方式对我们的特殊情况非常特殊的不兼容性。

我的问题

我的主要问题是 - 调试涉及这些“安全点”的JVM堆栈跟踪的最佳方法是什么,我在哪里可以开始学习如何处理这些错误?在这一行上还有其他问题,但我没有看到一般性答案。

二级,任何对aws,java,网络的了解,以及Ubuntu在云中的行为方式可能会有所不同。

1 个答案:

答案 0 :(得分:0)

尝试使用最新的JVM(6u32或7u4)并查看它是否仍然可重现。如果您使用的是较旧的版本,那么至少有一个很好的机会它已经被修复了。