问题描述
这个问题这两周一直困扰我,查了各种资料用尽各种办法都无法解决,现在只有希望大家能给我提供解决思路:问题描述: 在项目上为了保证加密算法的一致性,程序中会使用jna加载so动态链接库,并调用其中相关方法来加解密,现在的情况是第一次交易的时候加解密都是成功的,然后再发起一个交易就会造成weblogic服务器down掉。报错的hs_err_pid11047.log日志中部分内容:## An unexpected error has been detected by HotSpot Virtual Machine:## SIGSEGV (0xb) at pc=0x00000000, pid=11047, tid=2143591344## Java VM: Java HotSpot(TM) Server VM (1.5.0_12-b04 mixed mode)--------------- T H R E A D ---------------Current thread (0x0847e4a0): JavaThread "RMI RenewClean-[82.0.98.36:58338]" daemon [_thread_in_Java, id=11509]siginfo:[error occurred during error reporting, step 90, id 0xb]Stack: [0x7fbc9000,0x7fc4a000), sp=0x7fc47df4, free space=507kNative frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)后面还有很多就不贴了。其中SIGSEGV标志代表出错的时候正在调用外部的动态链接库,但很奇怪的是没有指明是哪个动态库,加载动态链接库的方法我是写在静态块中的。应该不会出现第二次调用的时候加载的动态链接库失效的问题。希望大家能给我提供解决思路,谢谢。 问题补充:beneo 写道
解决方案
1. so加static是印象中的,我没有了解过2. 你开一个进程,自己再去调用那个进程,你调用的不会挂,被调用的可能挂,挂了不影响调用者
解决方案二:
还有一点,就是要保证so文件的正确。一般来说会再开一个进程,通过exec来调用这个进程
解决方案三:
都so的线程请加上static