We're porting an app. that uses the JNI of the 1.3.1 JDK. It works under
other platforms but we are having problems with Linux/390. We get a SEGV
with the following (abbreviated) backtrace:
#0 0x44e6be5a in xeRunJniMethod ()
from /opt/IBMJava2-s390-131/jre/bin/classic/libjvm.so
#1 0x44d77f1a in invokeJniMethod ()
from /opt/IBMJava2-s390-131/jre/bin/classic/libjvm.so
#2 0x44d79f00 in jni_CallObjectMethodV ()
from /opt/IBMJava2-s390-131/jre/bin/classic/libjvm.so
#3 0x44d22844 in JNIEnv_::CallObjectMethodV (this=0x67a040, obj=0x67a57c,
methodID=0x4d2c88, args=0x4823f8e8)
at /opt/IBMJava2-s390-131/include/jni.h:915
Without source it's a little hard to debug the JNI but one thing I'm seeing
is:
V44E88E30 L 5830D02C LA 4133D000 L 5810D018
V44E88E3C LA 4111D000 LR 182B BASR 0DE1
V44E88E44 L 5820F094 LHI A7180002 N 54102004
V44E88E50 LTR 1211 BRNZ A7740008 L 58102000
V44E88E5A L 58601000 <----- Instruction that causes SEGV
The value in R2 is what's contained in the 1st word of the 'obj' parameter
in the call trace above (although it's loaded from 94(,R15) which had been
set up earlier - I've traced it as far back as xeAddRef).
I'm not sure if there are any JDK gurus/developers watching this forum but
I'm pretty much at a loss as to what to do next.
Neale