[
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)