Java JNI应用程序挂起
请帮助您如何调试JNI应用程序 使用jps获取运行jvm的进程的pid:Java JNI应用程序挂起,java,c++,c,hadoop,java-native-interface,Java,C++,C,Hadoop,Java Native Interface,请帮助您如何调试JNI应用程序 使用jps获取运行jvm的进程的pid: $ jps 8248 <- this is the pid of the process that was span up by a C++ application to run JNI stuff ... 8335 Jps 注意,它挂在某种全局互斥锁中 我认为这个gdb回溯堆栈对于确定这个问题的根本原因应该非常有用 这应该是一个一般的JNI调试问题?如果您感兴趣,这里有一段C代码,
$ jps
8248 <- this is the pid of the process that was span up by a C++ application to run JNI stuff ...
8335 Jps
注意,它挂在某种全局互斥锁中
我认为这个gdb回溯堆栈对于确定这个问题的根本原因应该非常有用
这应该是一个一般的JNI调试问题?如果您感兴趣,这里有一段C代码,它跨越了JNi交互的JVM-
java版本“1.8.0_141”
gcc版本4.8.5 20150623(红帽4.8.5-11)(gcc)
运行时环境:
export LD_LIBRARY_PATH=$CDH/lib64:$JAVA_HOME/jre/lib/$OS_ARCH/server
export CLASSPATH=`hadoop classpath`
export _JAVA_OPTIONS=-Xss1280m
谢谢你的任何线索
此外,根据悬空的堆栈,它试图失败
#6 0x00007fddda9ec52d in printExceptionAndFree () from /opt/cloudera/parcels/CDH/lib64/libhdfs.so.0.0.0
#7 0x00007fddda9ed46b in getJNIEnv () from /opt/cloudera/parcels/CDH/lib64/libhdfs.so.0.0.0
但仍在继续努力
printExceptionAndFreeV()->SettlesAcceptionString()->mutexLock()锁 根本原因是
谢谢 @MahonriMoriancumer编辑被拒绝。JNI代码是用C或C++编写的。OP没有指定哪个,堆栈跟踪也不清楚。
#6 0x00007fddda9ec52d in printExceptionAndFree () from /opt/cloudera/parcels/CDH/lib64/libhdfs.so.0.0.0
#7 0x00007fddda9ed46b in getJNIEnv () from /opt/cloudera/parcels/CDH/lib64/libhdfs.so.0.0.0