jna 调用so导致进程终止

通过jna调用so出现异常导致java进程终止,查看堆栈信息

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f95520d9880, pid=2647, tid=0x00007f9570dd2700
#
# JRE version: OpenJDK Runtime Environment (8.0_292-b10) (build 1.8.0_292-8u292-b10-0ubuntu1~18.04-b10)
# Java VM: OpenJDK 64-Bit Server VM (25.292-b10 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libOSAdaptor.so+0x3880]  dMutexLock+0x59
#
# 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
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x00007f956c00b800):  JavaThread "main" [_thread_in_native, id=2649, stack(0x00007f9570cd3000,0x00007f9570dd3000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000

Registers:
RAX=0x0000000000000000, RBX=0x00007f956c4d06a0, RCX=0x00007f9551c2a93b, RDX=0x00007f9551e95560
RSP=0x00007f9570dd0180, RBP=0x00007f9570dd02c0, RSI=0x00000000ffffffff, RDI=0x0000000000000000
R8 =0x0000000000000000, R9 =0x0000000000000004, R10=0x00007f956c0008d0, R11=0x00007f95520d9827
R12=0x0000000000000000, R13=0x0000000000000008, R14=0x0000000000000006, R15=0x00007f9570dd0a40
RIP=0x00007f95520d9880, EFLAGS=0x0000000000010246, CSGSFS=0x002b000000000033, ERR=0x0000000000000004
  TRAPNO=0x000000000000000e

Top of Stack: (sp=0x00007f9570dd0180)
0x00007f9570dd0180:   ffffffff00000002 0000000000000000
0x00007f9570dd0190:   0000000000000000 0000000100000000
0x00007f9570dd01a0:   0000000000000000 0000000000000000
0x00007f9570dd01b0:   0000000000000000 0000000000000000
0x00007f9570dd01c0:   000000006176616a 0000000000000000
0x00007f9570dd01d0:   1dc13d8000000230 000034840f001579
0x00007f9570dd01e0:   43786574754d645d 7420206574616572
0x00007f9570dd01f0:   0000000000000000 0000000000000000
0x00007f9570dd0200:   1212040202203e18 0000000000000000
0x00007f9570dd0210:   0000000000000000 0000000000000000
0x00007f9570dd0220:   0000000000000000 0000000000000000
0x00007f9570dd0230:   0000000000000000 0000000000000000
0x00007f9570dd0240:   0000000000000000 0000000000000000
0x00007f9570dd0250:   cafebabecafebabe 0000000000000058
0x00007f9570dd0260:   0000000670dd0480 0000000000000007
0x00007f9570dd0270:   0000000000000060 00007f956c0008f0
0x00007f9570dd0280:   0000000000000080 ffffffffffffffb0
0x00007f9570dd0290:   0000000000000001 0000003100000006
0x00007f9570dd02a0:   0000000000000000 0000000000000000
0x00007f9570dd02b0:   00007f956c4d06a0 fcd6906a0a18ba00
0x00007f9570dd02c0:   00007f9570dd0300 00007f9551ea393d
0x00007f9570dd02d0:   00007f9570dd02f0 00007f9551e95560
0x00007f9570dd02e0:   00007f9551c2a93b 00007f9551c2a948
0x00007f9570dd02f0:   000000006c4d06a0 fcd6906a0a18ba00
0x00007f9570dd0300:   00007f9570dd0340 00007f9551ea4072
0x00007f9570dd0310:   00007f9570dd0340 00007f9551e95560
0x00007f9570dd0320:   00007f9551c2a93b 00007f9551c2a948
0x00007f9570dd0330:   00007f956c4d06a0 fcd6906a0a18ba00
0x00007f9570dd0340:   00007f9570dd0480 00007f9551ad99b7
0x00007f9570dd0350:   0000000000000000 00007f9551e95440
0x00007f9570dd0360:   0000000100000000 00007f956c4d0150
0x00007f9570dd0370:   000000006176616a 0000000000000000 

Instructions: (pc=0x00007f95520d9880)
0x00007f95520d9860:   ff ff 01 00 00 00 c7 85 e0 fe ff ff 00 00 00 00
0x00007f95520d9870:   83 bd c4 fe ff ff ff 75 14 48 8b 85 e8 fe ff ff
0x00007f95520d9880:   48 8b 00 48 89 c7 e8 65 f1 ff ff eb 69 83 bd c4
0x00007f95520d9890:   fe ff ff 00 75 14 48 8b 85 e8 fe ff ff 48 8b 00 

Register to memory mapping:

RAX=0x0000000000000000 is an unknown value
RBX=0x00007f956c4d06a0 is an unknown value
RCX=0x00007f9551c2a93b: <offset 0x23993b> in /usr/lib/libMapDBAdaptor.so at 0x00007f95519f1000
RDX=0x00007f9551e95560: MapData_Path+0 in /usr/lib/libMapDBAdaptor.so at 0x00007f95519f1000
RSP=0x00007f9570dd0180 is pointing into the stack for thread: 0x00007f956c00b800
RBP=0x00007f9570dd02c0 is pointing into the stack for thread: 0x00007f956c00b800
RSI=0x00000000ffffffff is an unknown value
RDI=0x0000000000000000 is an unknown value
R8 =0x0000000000000000 is an unknown value
R9 =0x0000000000000004 is an unknown value
R10=0x00007f956c0008d0 is an unknown value
R11=0x00007f95520d9827: dMutexLock+0 in /usr/lib/libOSAdaptor.so at 0x00007f95520d6000
R12=0x0000000000000000 is an unknown value
R13=0x0000000000000008 is an unknown value
R14=0x0000000000000006 is an unknown value
R15=0x00007f9570dd0a40 is pointing into the stack for thread: 0x00007f956c00b800


Stack: [0x00007f9570cd3000,0x00007f9570dd3000],  sp=0x00007f9570dd0180,  free space=1012k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libOSAdaptor.so+0x3880]  dMutexLock+0x59
C  [libConfigureCache.so+0x193d]  GetConfiguration+0x4f
C  [libConfigureCache.so+0x2072]  GetChar+0x4b
C  [libMapDBAdaptor.so+0xe89b7]  ParkingDataMpl::ParkingDataMpl()+0x115
C  [libMapDBAdaptor.so+0xe8813]  ParkingDataMpl::instance()+0x93
C  [libMapDBAdaptor.so+0xe7b0e]  requestRoadsByTagAndParkingID+0x3f
C  [libServerRoute.so+0x6b841]  RouteDataManager::loadLinkInfo(long, char const*, std::unordered_map<long, Link, std::hash<long>, std::equal_to<long>, std::allocator<std::pair<long const, Link> > >&)+0x9d
C  [libServerRoute.so+0x6c586]  RouteDataManager::LoadDB(long, char const*)+0x10e
C  [libServerRoute.so+0x63626]  RouteCalculator::Calc(CalcRouteParam&, CalcRouteResult&)+0x112
C  [libServerRoute.so+0x67053]  requestServerRouteWithDevice+0xdb
C  [jna692332108206187444.tmp+0x139c2]
C  0x00007f9570dd1498

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.sun.jna.Native.invokeInt(Lcom/sun/jna/Function;JI[Ljava/lang/Object;)I+0
j  com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;ZI)Ljava/lang/Object;+211
j  com.sun.jna.Function.invoke(Ljava/lang/reflect/Method;[Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object;+271
j  com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+390
j  com.sun.proxy.$Proxy4.requestServerRouteWithDevice([BI[BILcom/sun/jna/ptr/PointerByReference;Lcom/sun/jna/ptr/IntByReference;)I+46
j  com.navinfo.utils.NativeUtils.callRoutePlanning([B[B)[B+200
j  com.navinfo.test.CallSo.main([Ljava/lang/String;)V+258
v  ~StubRoutines::call_stub

---------------  P R O C E S S  --------------

网上有博客讲解如何查看此文件,不做介绍。

只关注第一部分

The crash happened outside the Java Virtual Machine in native code.

See problematic frame for where to report the bug.

说明问题不是java部分导致的(jvm没那么脆弱),然后让查看问题产生的帧。

Problematic frame:
C  [libOSAdaptor.so+0x3880]  dMutexLock+0x59

然后就看到时其中一个依赖的so中产生的问题,看dMutexLock。大概是一个锁导致的。

接下来就可以让对应的同事看一下这个问题了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值