Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI应用程序挂起_Java_C++_C_Hadoop_Java Native Interface - Fatal编程技术网

Java JNI应用程序挂起

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代码,

请帮助您如何调试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代码,它跨越了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