JVM 在 Centos7 上崩溃



我在 centos7 上运行一个码头服务器,它不断崩溃并出现以下错误

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fdd323ee698, pid=79411, tid=0x00007fd05bdfd700
#
# JRE version: OpenJDK Runtime Environment (8.0_222-b10) (build 1.8.0_222-8u222-b10-1~14.04-b10)
# Java VM: OpenJDK 64-Bit Server VM (25.222-b10 mixed mode linux-amd64 )
# Problematic frame:
# V  [libjvm.so+0x653698]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
---------------  T H R E A D  ---------------
Current thread (0x00007fd044001800):  JavaThread "cron4j::scheduler[875ca3d006f7a65e29bf90fc0000016fc6274c4c6286cd54]::executor[875ca3d006f7a65e293583000000016fc678c0816e4418c5]" [_thread_in_vm, id=93353, stack(0x00007fd05bcfd000,0x00007fd05bdfe000)]
siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000
Stack: [0x00007fd05bcfd000,0x00007fd05bdfe000],  sp=0x00007fd05bdfc4b0,  free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x653698]
C  [libbCacheService.so+0x2068c]  JNIEnv_::GetObjectClass(_jobject*)+0x2e
C  [libbCacheService.so+0x1f400]  Java_com_applictaion_test_CacheService_buildCache+0x111
j  com.application.test.CacheService.buildCache([Lcom/application/test/db/CacheJNI;)V+0

同样的代码在 ubuntu 上工作正常。然而,它在 Centos 7 上不断失败。

我有

gcc --version
gcc (GCC) 9.2.0
java-1.8.0-openjdk-amd64 and jre1.8.0_65 same issue with both the JRE versions
Further more I use -XX:+UseParallelGC for GC.

正如人们所看到的,问题来自 libjvm.so JVM环境,而不是应用程序问题。 此外,Ubuntu 上的相同设置和代码工作正常,知道 Centos 7 是怎么回事吗?

谢谢

拉吉

正如人们所看到的 libjvm.so 问题来自JVM环境,而不是应用程序问题

否:问题很可能与libbCacheService.so有关,而不是libjvm.so。我不知道libbCacheService.so的起源是什么,但鉴于谷歌只有在我搜索它时才找到这个问题,我怀疑这是你的应用程序。

此外,Ubuntu 上的相同设置和代码工作正常

这种情况很常见:表现出未定义行为的应用程序在一个系统上"正常工作",而在另一个系统上崩溃。

第一步应该是使用调试信息构建libbCacheService.so,启用核心转储,并从核心检查从JNIEnv_::GetObjectClass()调用的任何libjvm.so函数是否使用正确的参数调用。

附言看起来(从si_addr(libjvm.so取消引用一个空指针。可能是因为您将 NULL 指针作为参数之一传递给它。

相关内容

  • 没有找到相关文章

最新更新