gpt4 book ai didi

java - 什么可以阻止 JVM 在 native 代码崩溃后退出?

转载 作者:行者123 更新时间:2023-11-30 07:34:50 24 4
gpt4 key购买 nike

我有一个 C++ 库,我通过 JNI 从 Java 调用它。 C++ 代码中存在一个偶尔会导致 JVM 崩溃的错误。为了对此类崩溃具有鲁棒性,我将 Java 程序包装在一个 shell 脚本中,该脚本在 java 退出时重新启动。大多数情况下这是有效的,但偶尔 JVM 会崩溃(将 native 堆栈跟踪打印到 stderr,Java 调试器无法再附加到它,停止消耗任何可观的 CPU 时间)但不会退出,所以在我用手杀死它之前它不会重新启动。为什么会发生这种情况,我可以做些什么来防止这种情况发生?

我在 linux 下运行。崩溃后,JVM 不响应 SIGTERM,只响应 SIGKILL。当我使用 native 调试器附加到 JVM 进程时,我看到线程都在 __kernel_vsyscall 中被阻塞。

最佳答案

FWIW 我最终将这些死锁追溯到 bug in glibc's malloc .它已经为人所知多年,显然没有修复它的计划。 :-(

关于java - 什么可以阻止 JVM 在 native 代码崩溃后退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com