[ https://issues.apache.org/jira/browse/HDFS-12494?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Zhuge updated HDFS-12494: ------------------------------ Description: libhdfs application crashes when CLASSPATH is set but not set properly. It uses wildcard in this case. {noformat} $ export CLASSPATH=$(hadoop classpath) $ pwd /Users/jzhuge/hadoop2/hadoop-hdfs-project/hadoop-hdfs/target/native $ ./test_libhdfs_ops # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00000001052968f7, pid=14147, tid=775 # # JRE version: Java(TM) SE Runtime Environment (7.0_79-b15) (build 1.7.0_79-b15) # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode bsd-amd64 compressed oops) # Problematic frame: # C [libhdfs.0.0.0.dylib+0x38f7] setTLSExceptionStrings+0x47 # # Core dump written. Default location: /cores/core or core.14147 # # An error report file with more information is saved as: # /Users/jzhuge/hadoop2/hadoop-hdfs-project/hadoop-hdfs/target/native/hs_err_pid14147.log # # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # Abort trap: 6 (core dumped) [jzhuge@jzhuge-MBP native]((be32925fff5...) *+)$ lldb -c /cores/core.14147 (lldb) target create --core "/cores/core.14147" warning: (x86_64) /cores/core.14147 load command 549 LC_SEGMENT_64 has a fileoff + filesize (0x14627f000) that extends beyond the end of the file (0x14627e000), the segment will be truncated to match warning: (x86_64) /cores/core.14147 load command 550 LC_SEGMENT_64 has a fileoff (0x14627f000) that extends beyond the end of the file (0x14627e000), ignoring this section Core file '/cores/core.14147' (x86_64) was loaded. (lldb) bt * thread #1, stop reason = signal SIGSTOP * frame #0: 0x00007fffcf89ad42 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fffcf988457 libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x00007fffcf800420 libsystem_c.dylib`abort + 129 frame #3: 0x00000001056cd5fb libjvm.dylib`os::abort(bool) + 25 frame #4: 0x00000001057d98fc libjvm.dylib`VMError::report_and_die() + 2308 frame #5: 0x00000001056cefb5 libjvm.dylib`JVM_handle_bsd_signal + 1083 frame #6: 0x00007fffcf97bb3a libsystem_platform.dylib`_sigtramp + 26 frame #7: 0x00000001052968f8 libhdfs.0.0.0.dylib`setTLSExceptionStrings(rootCause=0x0000000000000000, stackTrace=0x0000000000000000) at jni_helper.c:589 [opt] frame #8: 0x00000001052954f0 libhdfs.0.0.0.dylib`printExceptionAndFreeV(env=0x00007ffaff0019e8, exc=0x00007ffafec04140, noPrintFlags=<unavailable>, fmt="loadFileSystems", ap=<unavailable>) at exception.c:183 [opt] frame #9: 0x00000001052956bb libhdfs.0.0.0.dylib`printExceptionAndFree(env=<unavailable>, exc=<unavailable>, noPrintFlags=<unavailable>, fmt=<unavailable>) at exception.c:213 [opt] frame #10: 0x00000001052967f4 libhdfs.0.0.0.dylib`getJNIEnv [inlined] getGlobalJNIEnv at jni_helper.c:463 [opt] frame #11: 0x000000010529664f libhdfs.0.0.0.dylib`getJNIEnv at jni_helper.c:528 [opt] frame #12: 0x00000001052975eb libhdfs.0.0.0.dylib`hdfsBuilderConnect(bld=0x00007ffafed00000) at hdfs.c:693 [opt] frame #13: 0x000000010528be30 test_libhdfs_ops`main(argc=<unavailable>, argv=<unavailable>) at test_libhdfs_ops.c:91 [opt] frame #14: 0x00007fffcf76c235 libdyld.dylib`start + 1 (lldb) f 10 libhdfs.0.0.0.dylib was compiled with optimization - stepping may behave oddly; variables may not be available. frame #10: 0x00000001052967f4 libhdfs.0.0.0.dylib`getJNIEnv [inlined] getGlobalJNIEnv at jni_helper.c:463 [opt] 460 "org/apache/hadoop/fs/FileSystem", 461 "loadFileSystems", "()V"); 462 if (jthr) { -> 463 printExceptionAndFree(env, jthr, PRINT_EXC_ALL, "loadFileSystems"); 464 } 465 } 466 else { (lldb) f 7 frame #7: 0x00000001052968f8 libhdfs.0.0.0.dylib`setTLSExceptionStrings(rootCause=0x0000000000000000, stackTrace=0x0000000000000000) at jni_helper.c:589 [opt] 586 mutexUnlock(&jvmMutex); 587 } 588 -> 589 free(state->lastExceptionRootCause); 590 free(state->lastExceptionStackTrace); 591 state->lastExceptionRootCause = (char*)rootCause; 592 state->lastExceptionStackTrace = (char*)stackTrace; (lldb) p state (ThreadLocalState *) $0 = 0x0000000000000000 {noformat} The correct way to set CLASSPATH is because libhdfs does not support wildcard in CLASSPATH: {noformat} $ export CLASSPATH=$(hadoop classpath --glob) {noformat} Filed HDFS-12491 Support wildcard in CLASSPATH for libhdfs. was: libhdfs application crashes when CLASSPATH is set but not set properly: {noformat} $ export CLASSPATH=$(hadoop classpath) $ pwd /Users/jzhuge/hadoop2/hadoop-hdfs-project/hadoop-hdfs/target/native $ ./test_libhdfs_ops # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00000001052968f7, pid=14147, tid=775 # # JRE version: Java(TM) SE Runtime Environment (7.0_79-b15) (build 1.7.0_79-b15) # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode bsd-amd64 compressed oops) # Problematic frame: # C [libhdfs.0.0.0.dylib+0x38f7] setTLSExceptionStrings+0x47 # # Core dump written. Default location: /cores/core or core.14147 # # An error report file with more information is saved as: # /Users/jzhuge/hadoop2/hadoop-hdfs-project/hadoop-hdfs/target/native/hs_err_pid14147.log # # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # Abort trap: 6 (core dumped) [jzhuge@jzhuge-MBP native]((be32925fff5...) *+)$ lldb -c /cores/core.14147 (lldb) target create --core "/cores/core.14147" warning: (x86_64) /cores/core.14147 load command 549 LC_SEGMENT_64 has a fileoff + filesize (0x14627f000) that extends beyond the end of the file (0x14627e000), the segment will be truncated to match warning: (x86_64) /cores/core.14147 load command 550 LC_SEGMENT_64 has a fileoff (0x14627f000) that extends beyond the end of the file (0x14627e000), ignoring this section Core file '/cores/core.14147' (x86_64) was loaded. (lldb) bt * thread #1, stop reason = signal SIGSTOP * frame #0: 0x00007fffcf89ad42 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fffcf988457 libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x00007fffcf800420 libsystem_c.dylib`abort + 129 frame #3: 0x00000001056cd5fb libjvm.dylib`os::abort(bool) + 25 frame #4: 0x00000001057d98fc libjvm.dylib`VMError::report_and_die() + 2308 frame #5: 0x00000001056cefb5 libjvm.dylib`JVM_handle_bsd_signal + 1083 frame #6: 0x00007fffcf97bb3a libsystem_platform.dylib`_sigtramp + 26 frame #7: 0x00000001052968f8 libhdfs.0.0.0.dylib`setTLSExceptionStrings(rootCause=0x0000000000000000, stackTrace=0x0000000000000000) at jni_helper.c:589 [opt] frame #8: 0x00000001052954f0 libhdfs.0.0.0.dylib`printExceptionAndFreeV(env=0x00007ffaff0019e8, exc=0x00007ffafec04140, noPrintFlags=<unavailable>, fmt="loadFileSystems", ap=<unavailable>) at exception.c:183 [opt] frame #9: 0x00000001052956bb libhdfs.0.0.0.dylib`printExceptionAndFree(env=<unavailable>, exc=<unavailable>, noPrintFlags=<unavailable>, fmt=<unavailable>) at exception.c:213 [opt] frame #10: 0x00000001052967f4 libhdfs.0.0.0.dylib`getJNIEnv [inlined] getGlobalJNIEnv at jni_helper.c:463 [opt] frame #11: 0x000000010529664f libhdfs.0.0.0.dylib`getJNIEnv at jni_helper.c:528 [opt] frame #12: 0x00000001052975eb libhdfs.0.0.0.dylib`hdfsBuilderConnect(bld=0x00007ffafed00000) at hdfs.c:693 [opt] frame #13: 0x000000010528be30 test_libhdfs_ops`main(argc=<unavailable>, argv=<unavailable>) at test_libhdfs_ops.c:91 [opt] frame #14: 0x00007fffcf76c235 libdyld.dylib`start + 1 (lldb) f 10 libhdfs.0.0.0.dylib was compiled with optimization - stepping may behave oddly; variables may not be available. frame #10: 0x00000001052967f4 libhdfs.0.0.0.dylib`getJNIEnv [inlined] getGlobalJNIEnv at jni_helper.c:463 [opt] 460 "org/apache/hadoop/fs/FileSystem", 461 "loadFileSystems", "()V"); 462 if (jthr) { -> 463 printExceptionAndFree(env, jthr, PRINT_EXC_ALL, "loadFileSystems"); 464 } 465 } 466 else { (lldb) f 7 frame #7: 0x00000001052968f8 libhdfs.0.0.0.dylib`setTLSExceptionStrings(rootCause=0x0000000000000000, stackTrace=0x0000000000000000) at jni_helper.c:589 [opt] 586 mutexUnlock(&jvmMutex); 587 } 588 -> 589 free(state->lastExceptionRootCause); 590 free(state->lastExceptionStackTrace); 591 state->lastExceptionRootCause = (char*)rootCause; 592 state->lastExceptionStackTrace = (char*)stackTrace; (lldb) p state (ThreadLocalState *) $0 = 0x0000000000000000 {noformat} The correct way to set CLASSPATH is because libhdfs does not support wildcard in CLASSPATH: {noformat} $ export CLASSPATH=$(hadoop classpath --glob) {noformat} Filed HDFS-12491 Support wildcard in CLASSPATH for libhdfs. > libhdfs SIGSEGV in setTLSExceptionStrings > ----------------------------------------- > > Key: HDFS-12494 > URL: https://issues.apache.org/jira/browse/HDFS-12494 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs > Affects Versions: 3.0.0-alpha4 > Reporter: John Zhuge > > libhdfs application crashes when CLASSPATH is set but not set properly. It > uses wildcard in this case. > {noformat} > $ export CLASSPATH=$(hadoop classpath) > $ pwd > /Users/jzhuge/hadoop2/hadoop-hdfs-project/hadoop-hdfs/target/native > $ ./test_libhdfs_ops > # > # A fatal error has been detected by the Java Runtime Environment: > # > # SIGSEGV (0xb) at pc=0x00000001052968f7, pid=14147, tid=775 > # > # JRE version: Java(TM) SE Runtime Environment (7.0_79-b15) (build > 1.7.0_79-b15) > # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode bsd-amd64 > compressed oops) > # Problematic frame: > # C [libhdfs.0.0.0.dylib+0x38f7] setTLSExceptionStrings+0x47 > # > # Core dump written. Default location: /cores/core or core.14147 > # > # An error report file with more information is saved as: > # > /Users/jzhuge/hadoop2/hadoop-hdfs-project/hadoop-hdfs/target/native/hs_err_pid14147.log > # > # > # If you would like to submit a bug report, please visit: > # http://bugreport.java.com/bugreport/crash.jsp > # The crash happened outside the Java Virtual Machine in native code. > # See problematic frame for where to report the bug. > # > Abort trap: 6 (core dumped) > [jzhuge@jzhuge-MBP native]((be32925fff5...) *+)$ lldb -c /cores/core.14147 > (lldb) target create --core "/cores/core.14147" > warning: (x86_64) /cores/core.14147 load command 549 LC_SEGMENT_64 has a > fileoff + filesize (0x14627f000) that extends beyond the end of the file > (0x14627e000), the segment will be truncated to match > warning: (x86_64) /cores/core.14147 load command 550 LC_SEGMENT_64 has a > fileoff (0x14627f000) that extends beyond the end of the file (0x14627e000), > ignoring this section > Core file '/cores/core.14147' (x86_64) was loaded. > (lldb) bt > * thread #1, stop reason = signal SIGSTOP > * frame #0: 0x00007fffcf89ad42 libsystem_kernel.dylib`__pthread_kill + 10 > frame #1: 0x00007fffcf988457 libsystem_pthread.dylib`pthread_kill + 90 > frame #2: 0x00007fffcf800420 libsystem_c.dylib`abort + 129 > frame #3: 0x00000001056cd5fb libjvm.dylib`os::abort(bool) + 25 > frame #4: 0x00000001057d98fc libjvm.dylib`VMError::report_and_die() + 2308 > frame #5: 0x00000001056cefb5 libjvm.dylib`JVM_handle_bsd_signal + 1083 > frame #6: 0x00007fffcf97bb3a libsystem_platform.dylib`_sigtramp + 26 > frame #7: 0x00000001052968f8 > libhdfs.0.0.0.dylib`setTLSExceptionStrings(rootCause=0x0000000000000000, > stackTrace=0x0000000000000000) at jni_helper.c:589 [opt] > frame #8: 0x00000001052954f0 > libhdfs.0.0.0.dylib`printExceptionAndFreeV(env=0x00007ffaff0019e8, > exc=0x00007ffafec04140, noPrintFlags=<unavailable>, fmt="loadFileSystems", > ap=<unavailable>) at exception.c:183 [opt] > frame #9: 0x00000001052956bb > libhdfs.0.0.0.dylib`printExceptionAndFree(env=<unavailable>, > exc=<unavailable>, noPrintFlags=<unavailable>, fmt=<unavailable>) at > exception.c:213 [opt] > frame #10: 0x00000001052967f4 libhdfs.0.0.0.dylib`getJNIEnv [inlined] > getGlobalJNIEnv at jni_helper.c:463 [opt] > frame #11: 0x000000010529664f libhdfs.0.0.0.dylib`getJNIEnv at > jni_helper.c:528 [opt] > frame #12: 0x00000001052975eb > libhdfs.0.0.0.dylib`hdfsBuilderConnect(bld=0x00007ffafed00000) at hdfs.c:693 > [opt] > frame #13: 0x000000010528be30 test_libhdfs_ops`main(argc=<unavailable>, > argv=<unavailable>) at test_libhdfs_ops.c:91 [opt] > frame #14: 0x00007fffcf76c235 libdyld.dylib`start + 1 > (lldb) f 10 > libhdfs.0.0.0.dylib was compiled with optimization - stepping may behave > oddly; variables may not be available. > frame #10: 0x00000001052967f4 libhdfs.0.0.0.dylib`getJNIEnv [inlined] > getGlobalJNIEnv at jni_helper.c:463 [opt] > 460 "org/apache/hadoop/fs/FileSystem", > 461 "loadFileSystems", "()V"); > 462 if (jthr) { > -> 463 printExceptionAndFree(env, jthr, PRINT_EXC_ALL, > "loadFileSystems"); > 464 } > 465 } > 466 else { > (lldb) f 7 > frame #7: 0x00000001052968f8 > libhdfs.0.0.0.dylib`setTLSExceptionStrings(rootCause=0x0000000000000000, > stackTrace=0x0000000000000000) at jni_helper.c:589 [opt] > 586 mutexUnlock(&jvmMutex); > 587 } > 588 > -> 589 free(state->lastExceptionRootCause); > 590 free(state->lastExceptionStackTrace); > 591 state->lastExceptionRootCause = (char*)rootCause; > 592 state->lastExceptionStackTrace = (char*)stackTrace; > (lldb) p state > (ThreadLocalState *) $0 = 0x0000000000000000 > {noformat} > The correct way to set CLASSPATH is because libhdfs does not support wildcard > in CLASSPATH: > {noformat} > $ export CLASSPATH=$(hadoop classpath --glob) > {noformat} > Filed HDFS-12491 Support wildcard in CLASSPATH for libhdfs. -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org