[ https://issues.apache.org/jira/browse/HADOOP-12955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15213714#comment-15213714 ]
Kai Zheng commented on HADOOP-12955: ------------------------------------ After looking into {{THROW}} and the question how to do exception handling in JNI, I agree we need to do the error checking after the call {{loadLib}} in {{Java_org_apache_hadoop_io_erasurecode_ErasureCodeNative_getLibraryName}} by using something like {{ExceptionOccurred}}. While looking around more, I found there is some codes to clean up in {{NativeLibraryChecker}} and also make consistent with other native things like openssl. So the resultant codes will remove the call to loadLib totally. The JNI function {{getLibraryName}} should assume {{loadLibrary}} is called already. If not called, then the simple constant like {{HADOOP_ISAL_LIBRARY}} will be returned. Will update the patch. [~cmccabe] would you please help with check it, thanks! > Fix bugs in the initialization of the ISA-L library JNI bindings > ---------------------------------------------------------------- > > Key: HADOOP-12955 > URL: https://issues.apache.org/jira/browse/HADOOP-12955 > Project: Hadoop Common > Issue Type: Bug > Components: native > Reporter: Kai Zheng > Assignee: Kai Zheng > Attachments: HADOOP-12955-v1.patch, HADOOP-12955-v2.patch > > > Ref. the comment > [here|https://issues.apache.org/jira/browse/HADOOP-11540?focusedCommentId=15207619&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15207619]. > > When run hadoop checknative, it also failed. Got something like below from > log: > {noformat} > Stack: [0x00007f2b9d405000,0x00007f2b9d506000], sp=0x00007f2b9d504748, free > space=1021k > Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native > code) > V [libjvm.so+0xa90c90] UTF8::unicode_length(char const*)+0x0 > V [libjvm.so+0x6ddfc3] jni_NewStringUTF+0xc3 > j > org.apache.hadoop.io.erasurecode.ErasureCodeNative.getLibraryName()Ljava/lang/String;+0 > j org.apache.hadoop.util.NativeLibraryChecker.main([Ljava/lang/String;)V+212 > v ~StubRoutines::call_stub > V [libjvm.so+0x68c616] JavaCalls::call_helper(JavaValue*, methodHandle*, > JavaCallArguments*, Thread*)+0x1056 > V [libjvm.so+0x6cdc32] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, > JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x362 > V [libjvm.so+0x6ea63a] jni_CallStaticVoidMethod+0x17a > C [libjli.so+0x7bcc] JavaMain+0x80c > C [libpthread.so.0+0x8182] start_thread+0xc2 > Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) > j > org.apache.hadoop.io.erasurecode.ErasureCodeNative.getLibraryName()Ljava/lang/String;+0 > j org.apache.hadoop.util.NativeLibraryChecker.main([Ljava/lang/String;)V+212 > v ~StubRoutines::call_stub > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)