JNI本地代码中使用dlopen载入动态链接库随机Crash
环境:
RHEL AS4 U5
GCC 3.4.6
JDK 1.6
JVM偶发性Crash,发生在dlopen调用处,参数是写死在代码中的,就搞不懂时而成功时而失败,有经验的能不能帮忙分析下原因啊,谢先。
JVM崩溃日志的堆栈部分,太长了,没能全部贴出
Stack: [0xb7f90000,0xb7fe1000), sp=0xb7fdf1e8, free space=316k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libc.so.6+0x61bdb]
C [libc.so.6+0x62c30]
C [libc.so.6+0x647c9] calloc+0xf9
C [ld-linux.so.2+0x9761]
C [ld-linux.so.2+0x5969]
C [ld-linux.so.2+0x746c]
C [libc.so.6+0x100278]
C [ld-linux.so.2+0xc66e]
C [libc.so.6+0x100ab8] _dl_open+0x98
C [libdl.so.2+0xcb8]
C [ld-linux.so.2+0xc66e]
C [libdl.so.2+0x12bb]
C [libdl.so.2+0xd11] dlopen+0x41
C [libtsstubjni.so+0xbf7e] callServiceClientByName+0x133
C [libtsstubjni.so+0xc2cf] callServiceClientByManName+0x82
C [libtsstubjni.so+0xc455] execstubstr+0x94
C [libtsstubjni.so+0xc555] Java_com_ydtf_tbi_pmm_jni_TSJniStub_callTuxedoServiceStr+0x80
j com.ydtf.tbi.pmm.jni.TSJniStub.callTuxedoServiceStr(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+0
j com.ydtf.tbi.pmm.jni.Test.main([Ljava/lang/String;)V+43
v ~StubRoutines::call_stub
V [libjvm.so+0x2b521d]
V [libjvm.so+0x43d9a8]
V [libjvm.so+0x2b50b0]
V [libjvm.so+0x2de4b6]
V [libjvm.so+0x2cfb5b]
C [java+0x1b98] JavaMain+0x2c8
C [libpthread.so.0+0x53cc]