0
My dynamic shared library complied with CPPFlAGS: -q64 -G. The compiler version is
IBM XL C/C++ for AIX, V11.1 (5724-X13)
Version: 11.01.0000.0024
when it was started, then crashed, here is part of information in hs_err*.log. It seems that this error occurred by dlopen
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGILL (0x4) at pc=0x0000000000000000, pid=4194314, tid=0x0000000000000102
#
# JRE version: (8.0) (build )
# Java VM: OpenJDK 64-Bit Server VM (0x8898-b00 mixed mode aix-ppc64 compressed oops)
# Problematic frame:
# C [libC.a+0xffffffff] std::char_traits<char>::length(const char*)+0x10
Here is the complete stack when crashed.
Stack: [0x000000011001b000,0x000000011021a000], sp=0x0000000110217a80, free space=2034k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libC.a+0xffffffff] std::char_traits<char>::length(const char*)+0x10
C [libC.a+0xffffffff] std::basic_ostream<char,std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char,std::char_traits<char> >&,const char*)+0x1cc
C 0x090000000c793038
C 0x090000000c78e3b8
C 0x090000000c78dfec
C 0x090000000c784498
C [libC.a+0xffffffff] <nameless function>+0x64
C [libc.a+0xffffffff] initialize_one_library+0x1c0
C [libc.a+0xffffffff] initialize_libs+0x98
C [libc.a+0xffffffff] load_libs+0x438
C [libc.a+0xffffffff] loadAndInit+0x260
C [libc.a+0xffffffff] dlopen+0x3a4
V [libjvm.so+0xffffffff] os::dll_load(const char*,char*,int)+0x130
V [libjvm.so+0xffffffff] lookup_on_load(AgentLibrary*,const char**,unsigned long)+0x94
V [libjvm.so+0xffffffff] Threads::create_vm(JavaVMInitArgs*,bool*)+0x1708
V [libjvm.so+0xffffffff] JNI_CreateJavaVM+0xac
C [java+0xffffffff] <nameless function>+0x94
C [java+0xffffffff] <nameless function>+0x88
C [libpthreads.a+0xffffffff] _pthread_body+0xf4
You sure it has to be C++ ? You have to realize that C++ doesn't work well together with dynamic linking. Or with exotic platforms like AIX. Or used together with other languages like Java. Anyways, did you compile with pthread-support? Java is massively multi-threaded. – Lorinczy Zsigmond – 2019-08-27T07:35:39.127
1Yes it should be C++, and complied with -lpthread. I have solved this problem by compiling it with GNU-g++ compiler. It works well now, thanks anyway. – Xiluo – 2019-08-29T01:40:00.180