[
https://issues.apache.org/jira/browse/HADOOP-12955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15215162#comment-15215162
]
Colin Patrick McCabe commented on HADOOP-12955:
-----------------------------------------------
{code}
if (error != NULL) {
THROW(env, "java/lang/UnsatisfiedLinkError", error);
}
{code}
There needs to be a {{return null;}} here after the {{THROW}} macro.
{code}
- try {
- isalDetail = ErasureCodeNative.getLoadingFailureReason();
- isalDetail = ErasureCodeNative.getLibraryName();
- isalLoaded = true;
- } catch (UnsatisfiedLinkError e) {
+ isalDetail = ErasureCodeNative.getLoadingFailureReason();
+ if (isalDetail != null) {
isalLoaded = false;
+ } else {
+ try {
+ isalDetail = ErasureCodeNative.getLibraryName();
+ isalLoaded = true;
+ } catch (UnsatisfiedLinkError e) {
+ isalDetail = e.getMessage();
+ isalLoaded = false;
+ }
{code}
I don't understand the rationale for doing this differently than the other
native libraries. If there is an {{UnsatisfiedLinkError}}, this should be
reflected by the return value of {{ErasureCodeNative#getLoadingFailureReason}}.
> 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,
> HADOOP-12955-v3.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)