JNI on AIX.
Hello Guys,
We have received some c code from our client their encryption/decryption algorithams from our client which we have to integrate in our java code. I have written a java class with some native methods. And a c program which is called from java using JNI and this c program calls the functions from the code provided by our client. Taking togather my own c program and the progs provided by the client i create a dll file on windows and i can call all the functions properly. So no problems till this point. Now we have to deploy the project on AIX, I take the same code to AIX and now i am creating a .so file insted of dll, compilation and library creation is fine( I am using C for AIX Compiler, Version 5), i am creating the library with the command
cc -g -G -I/usr/WebSphere/AppServer/java/include/ *.c -o libVMD.so
invoking some of the native methods in my java class from a test program also works fine but with a couple of other functions the JVM is crashing
This is the output that i get on my command window
SIGILL 4 (*) illegal instruction (not reset when caught)
si_signo [4]: SIGILL: (*) illegal instruction (not reset when caught)
si_errno [0]: Error 0
si_code [30]: ILL_ILLOPC [addr: 0x0]
stackpointer=2ff21ca8
Writing java dump to /usr/dev/cookie/src/javacore22492.1004125181.txt... OK
Illegal instruction(coredump)
and here is the core dump.
Fri Oct 26 15:39:41 2001
SIGILL received at d4d4d1d8 in /usr/lib/libVMD.so. Processing terminated.
J2RE 1.3.0 IBM build ca130-20010615a
/usr/WebSphere/AppServer/java/bin/java com.nubase.vmd.core.util.VmdHelper em manon4
System Properties
--
Java Home Dir:/usr/WebSphere/AppServer/java/jre
Java DLL Dir:/usr/WebSphere/AppServer/java/jre/bin
Sys Classpath:/usr/WebSphere/AppServer/java/jre/lib/rt.jar:/usr/WebSphere/AppServer/java/jre/lib/i18n.jar:/usr/WebSphere/AppServer/java/jre/classes
User Args:
-Djava.class.path=:/opt/db2inst1/sqllib/java/sqlj.zip:/opt/db2inst1/sqllib/java/db2java.zip:/opt/db2inst1/sqllib/java/runtime.zip:.
Current Thread Details
-
"main" (TID:0x300987e0, sys_thread_t:0x3000d7d8, state:R, native ID:0x1) prio=5
at com.nubase.vmd.core.util.VmdHelper.encryptPassword(Native Method)
at com.nubase.vmd.core.util.VmdHelper.main(VmdHelper.java:172)
-- Native Stack --
VmdEncrypteMotDePasse
Java_com_nubase_vmd_core_util_VmdHelper_encryptPassword
mmisInvoke_O_OHelper
_OHelper0 ?!?|^H^B?^C?^E^H`?
-
Operating Environment
Host: VMD:192.168.0.253
OS Level: AIX 4.3.3.0
Processors -
Architecture: POWER_PC (impl: POWER_604, ver: PV_604)
How Many: 1
Enabled: 1
User Limits (in bytes except for NOFILE and NPROC) -
RLIMIT_FSIZE: 1073741312
RLIMIT_DATA: 2147483645
RLIMIT_STACK: 33554432
RLIMIT_CORE: 1073741312
RLIMIT_NOFILE: 2000
NPROC(max): 262144
Page Space (in blocks) -
/dev/hd6: size=524288, free=523755
Application Environment
--
Signal Handlers -
SIGQUIT: intrDispatchMD (libhpi.a)
SIGILL: intrDispatchMD (libhpi.a)
SIGTRAP: unknown handler (libjitc.a)
SIGABRT: intrDispatchMD (libhpi.a)
SIGEMT: intrDispatchMD (libhpi.a)
SIGFPE: intrDispatchMD (libhpi.a)
SIGBUS: intrDispatchMD (libhpi.a)
SIGSEGV: intrDispatchMD (libhpi.a)
SIGSYS: intrDispatchMD (libhpi.a)
SIGPIPE: ignored
SIGUSR2: unknown handler (libjitc.a)
Environment Variables -
_=/usr/WebSphere/AppServer/java/bin/java
LANG=en_US
LOGIN=root
IMQCONFIGCL=/etc/IMNSearch/dbcshelp
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/opt/root/bin:/usr/bin/X11:/sbin:.:/opt/db2inst1/sqllib/bin:/opt/db2inst1/sqllib/adm:/opt/db2inst1/sqllib/misc
LC__FASTMSG=true
IMQCONFIGSRV=/etc/IMNSearch
CGI_DIRECTORY=/var/docsearch/cgi-bin
CLASSPATH=:/opt/db2inst1/sqllib/java/sqlj.zip:/opt/db2inst1/sqllib/java/db2java.zip:/opt/db2inst1/sqllib/java/runtime.zip:.
LOGNAME=root
MAIL=/usr/spool/mail/root
LOCPATH=/usr/lib/nls/loc
DOCUMENT_SERVER_MACHINE_NAME=localhost
USER=root
AUTHSTATE=compat
SHELL=/bin/ksh
ODMDIR=/etc/objrepos
DOCUMENT_SERVER_PORT=49213
HOME=/opt/root
DB2INSTANCE=db2inst1
LD_LIBRARY_PATH=/usr/lib
TERM=vt100
MAILMSG=[YOU HAVE NEW MAIL]
PWD=/usr/dev/cookie/src
DOCUMENT_DIRECTORY=/usr/docsearch/html
TZ=EST5EDT
A__z=! LOGNAME
XFILESEARCHPATH=/usr/WebSphere/AppServer/java/jre/lib/locale/%L/%T/%N%S:/usr/WebSphere/AppServer/java/jre/lib/locale/%L/%T/%N%S:
MALLOCMULTIHEAP=1
AIXTHREAD_SCOPE=S
AIXTHREAD_MUTEX_DEBUG=OFF
AIXTHREAD_RWLOCK_DEBUG=OFF
AIXTHREAD_COND_DEBUG=OFF
LIBPATH=/usr/WebSphere/AppServer/java/jre/bin:/usr/WebSphere/AppServer/java/jre/bin/classic:/opt/db2inst1/sqllib/lib
NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat
IBM_JAVA_COMMAND_LINE=/usr/WebSphere/AppServer/java/bin/java com.nubase.vmd.core.util.VmdHelper em manon4
JAVA_MAIN_VM=805392576
Loaded Libraries (sizes in bytes)
/usr/lib/libVMD.so
filesize: 111802
text start: d4d48000
text size: aa17
data start: 34d6e928
data size: 20f8
/usr/WebSphere/AppServer/java/jre/bin/libjitc.a
filesize: 2262001
text start: d3785000
text size: 1c53f3
data start: 34452570
data size: b020
/usr/lib/libiconv.a
filesize: 377832
text start: d0034100
text size: 13f3a
data start: 34404da0
data size: a574
/usr/lib/libi18n.a
filesize: 122601
text start: d002c100
text size: 78b4
data start: 344104b0
data size: 1124
/usr/lib/nls/loc/en_US
filesize: 14340
text start: d0026000
text size: 2d71
data start: d0029130
data size: 2324
/usr/WebSphere/AppServer/java/jre/bin/libzip.a
filesize: 106943
text start: d3771000
text size: 133ab
data start: 34291c70
data size: 1fdc
/usr/WebSphere/AppServer/java/jre/bin/libhpi.a
filesize: 111461
text start: d3761000
text size: fe2b
data start: 3003f340
data size: d20
/usr/WebSphere/AppServer/java/jre/bin/libxhpi.a
filesize: 10041
text start: d375f000
text size: 134a
data start: 3003ed50
data size: 1c8
/usr/WebSphere/AppServer/java/jre/bin/libjava.a
filesize: 398297
text start: d371f000
text size: 3fbf5
data start: 30036b18
data size: 6d18
/usr/WebSphere/AppServer/java/jre/bin/classic/libjvm.a
filesize: 1721315
text start: d35ed000
text size: 131aaf
data start: 300111d8
data size: 24e08
/usr/lib/libbsd.a
filesize: 62186
text start: d00d24e0
text size: 7deb
data start: f010ab28
data size: 1460
/usr/lib/libC.a
filesize: 2610937
text start: d080c360
text size: 5982
data start: f01d4760
data size: a08
/usr/lib/libC.a
filesize: 2610937
text start: d0798660
text size: 5fca
data start: f01d3460
data size: 83c
/usr/lib/libC.a
filesize: 2610937
text start: d079f7c0
text size: 6c174
data start: f01c0dc0
data size: 113c4
/usr/lib/libC.a
filesize: 2610937
text start: d078c070
text size: b756
data start: f01bf31c
data size: 1c
/usr/lib/libpthreads.a
filesize: 713478
text start: d0001000
text size: 22b4
data start: f0082000
data size: 41004
/usr/lib/libpthreads.a
filesize: 713478
text start: d0004000
text size: 202a1
data start: f00c4000
data size: 400c
/usr/lib/libC.a
filesize: 2610937
text start: d0757100
text size: 33653
data start: f01bad00
data size: 411c
/usr/lib/libcrypt.a
filesize: 11167
text start: d00250f8
text size: 87a
data start: f0081528
data size: 13c
/usr/lib/libc.a
filesize: 6409580
text start: d015f720
text size: 1c26a3
data start: f0000a20
data size: 7f908
"Finalizer" (TID:0x30098708, sys_thread_t:0x342f6d38, state:CW, native ID:0x304) prio=8
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:114)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:129)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:168)
-- Native Stack --
unavailable - iar 3008ffe8 not in text area
-
"Reference Handler" (TID:0x30098750, sys_thread_t:0x342f0c58, state:CW, native ID:0x203) prio=10
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:421)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
-- Native Stack --
unavailable - iar 0 not in text area
-
"Signal dispatcher" (TID:0x30098798, sys_thread_t:0x342ebf98, state:CW, native ID:0x102) prio=5
-- Native Stack --
unavailable - iar 0 not in text area
-
"main" (TID:0x300987e0, sys_thread_t:0x3000d7d8, state:R, native ID:0x1) prio=5
at com.nubase.vmd.core.util.VmdHelper.encryptPassword(Native Method)
at com.nubase.vmd.core.util.VmdHelper.main(VmdHelper.java:172)
-- Native Stack --
VmdEncrypteMotDePasse
Java_com_nubase_vmd_core_util_VmdHelper_encryptPassword
mmisInvoke_O_OHelper
_OHelper0 ?!?|^H^B?^C?^E^H`?
-
Monitor pool info:
Initial monitor count: 32
Minimum number of free monitors before expansion: 5
Pool will next be expanded by: 16
Current total number of monitors: 32
Current number of free monitors: 28
Monitor Pool Dump (inflated object-monitors):
sys_mon_t:0x30009de8 infl_mon_t: 0x300099f8:
java.lang.ref.Reference$Lock@3009DB38/3009DB40: <unowned>
Waiting to be notified:
"Reference Handler" (0x342f0c58)
sys_mon_t:0x30009ee8 infl_mon_t: 0x30009a38:
java.lang.ref.ReferenceQueue$Lock@3009D748/3009D750: <unowned>
Waiting to be notified:
"Finalizer" (0x342f6d38)
JVM System Monitor Dump (registered monitors):
Integer lock access-lock: <unowned>
ACS Heap lock: <unowned>
System Heap lock: <unowned>
Sleep lock: <unowned>
Method trace lock: <unowned>
UTF8 Cache lock: <unowned>
Heap lock: <unowned>
Rewrite Code lock: <unowned>
Monitor Cache lock: owner "main" (0x3000d7d8) 1 entry
JNI Pinning lock: <unowned>
JNI Global Reference lock: <unowned>
Classloader lock: <unowned>
Linking class lock: <unowned>
Binclass lock: <unowned>
Monitor Registry lock: owner "main" (0x3000d7d8) 1 entry
Thread queue lock: owner "main" (0x3000d7d8) 1 entry
Thread identifiers (as used in flat monitors):
ident 5 "Finalizer" (0x342f6d38) ee 0x342f6b6c
ident 4 "Reference Handler" (0x342f0c58) ee 0x342f0a8c
ident 3 "Signal dispatcher" (0x342ebf98) ee 0x342ebdcc
ident 2 "main" (0x3000d7d8) ee 0x3000d60c
Java Object Monitor Dump (flat & inflated object-monitors):
java.lang.ref.ReferenceQueue$Lock@3009D748/3009D750
locknflags 80000400 Monitor inflated infl_mon 0x30009a38
java.lang.ref.Reference$Lock@3009DB38/3009DB40
locknflags 80000200 Monitor inflated infl_mon 0x300099f8
what i am doing wrong here? or if there are any other issues while using JNI on AIX.
All the help appreciated.
Thanks

