Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Incomplete
-
Affects Version/s: JRuby 1.4
-
Fix Version/s: None
-
Component/s: Extensions, IBM/Other VM
-
Labels:None
-
Environment:Hideuname: Linux build 2.6.16.60-0.42.7-ppc64 #1 SMP Tue Nov 3 11:20:42 UTC 2009 ppc64 ppc64 ppc64 GNU/Linux
java: java version "1.6.0"
Java(TM) SE Runtime Environment (build pxp3260sr2-20080818_01(SR2))
IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux ppc-32 jvmxp3260-20080816_22093 (JIT enabled, AOT enabled)
J9VM - 20080816_022093_bHdSMr
JIT - r9_20080721_1330ifx2
GC - 20080724_AA)
JCL - 20080808_02Showuname: Linux build 2.6.16.60-0.42.7-ppc64 #1 SMP Tue Nov 3 11:20:42 UTC 2009 ppc64 ppc64 ppc64 GNU/Linux java: java version "1.6.0" Java(TM) SE Runtime Environment (build pxp3260sr2-20080818_01(SR2)) IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux ppc-32 jvmxp3260-20080816_22093 (JIT enabled, AOT enabled) J9VM - 20080816_022093_bHdSMr JIT - r9_20080721_1330ifx2 GC - 20080724_AA) JCL - 20080808_02
-
Number of attachments :9
Description
OK, I know this looks like a crazy scenario, but here we go:
I'm trying to run JRuby in the environment described above and I get this error:
Could not load FFI Provider: FFI not available: Could not locate stub library (/jni/ppc-Linux/libjffi-0.6.so) in jar file (LoadError)
What can I do ? Should I provide you with a build for that arch ? Please let me know, I would be happy to help.
-
- ant_clean_test_result.txt
- 27/Feb/10 10:27 PM
- 9 kB
- Antoine Toulme
-
- bool_callback_spec.rb
- 27/Feb/10 3:14 AM
- 0.6 kB
- Wayne Meissner
-
Hide
- jffi-ppc-Linux.jar
- 26/Feb/10 11:04 AM
- 27 kB
- Antoine Toulme
-
- META-INF/MANIFEST.MF 0.1 kB
- jni/ppc-Linux/libjffi-1.0.so 79 kB
-
- nohup.out
- 29/Dec/09 4:15 PM
- 8 kB
- Antoine Toulme
-
Hide
- ppc-Linux.jar
- 27/Dec/09 10:48 PM
- 30 kB
- Antoine Toulme
-
- META-INF/MANIFEST.MF 0.1 kB
- jni/ppc-Linux/libjffi-0.6.so 81 kB
-
- spec.log
- 31/Dec/09 5:29 PM
- 85 kB
- Antoine Toulme
-
- test_result.log
- 26/Feb/10 11:04 AM
- 5 kB
- Antoine Toulme
-
- with_jffi.log
- 31/Dec/09 3:24 PM
- 8 kB
- Antoine Toulme
-
- without_jffi.log
- 31/Dec/09 3:24 PM
- 9 kB
- Antoine Toulme
Activity
Antoine, thanks for the JAR. I've added it in rev. d5b724d on master branch. Please build the latest master and check that it all works as expected, that the native stuff is properly loaded on ppc-Linux platform and that it works.
Things like jruby -e 'puts $$', etc. And, running 'ant spec' and 'ant test' would nice too.
Thanks!
Vladimir, here are two runs of ant clean test with jruby. Looks like it fails ![]()
Should I try ant spec too ?
This could be unrelated to the jffi change though. Could you try with and without the jar file and see the diffs.
Is simple jruby -e 'puts $$' works?
Trying out ant spec would be interesting exercise as well.
Here goes:
$>jruby -e 'puts $$'
1733191502
I'm trying the various ant combinations you mention as well.
Here is ant clean test with and without the jar. I'm following up with ant spec...
Interesting, looks like 'puts $$' returns rather weird process id...
Here is the result of ant spec. I think it hanged when it tried to dump. I had to kill it.
Could you also try the following (but first please update to the very latest master branch):
- jruby samples/ffi/gettimeofday.rb
- jruby samples/ffi/qsort.rb
Does it work?
I get:
atoulme@build:~/jruby/bin> jruby ../samples/ffi/gettimeofday.rb
/shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require': Could not load FFI Provider: FFI not available: Could not locate stub library (/jni/ppc-Linux/libjffi-0.6.so) in jar file (LoadError)
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi/ffi.rb:69
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi/ffi.rb:31:in `require'
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi.rb:1
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi.rb:31:in `require'
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from ../samples/ffi/gettimeofday.rb:2
And same for qsort:
atoulme@build:~/jruby/bin> jruby ../samples/ffi/qsort.rb
/shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi/ffi.rb:69:in `require': Could not load FFI Provider: FFI not available: Could not locate stub library (/jni/ppc-Linux/libjffi-0.6.so) in jar file (LoadError)
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi/ffi.rb:69
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi/ffi.rb:1:in `require'
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi.rb:1
from /shared/common/buildr-1.4.0-jruby-1.4.0/lib/ruby/site_ruby/shared/ffi.rb:1:in `require'
from ../samples/ffi/qsort.rb:1
What am I missing ? Looks like something obviously is wrong with my setup. BTW, I had to remove the jar when pulling, as it was replaced by the jar I attached here.
No need to remove anything, the JAR should be in the main repo already. Just try to pull, then 'ant clean' and then 'ant'. And you should be set.
At the minimum, I expect that the FFI provider should be able to load.
OK, I tried deleting my current jruby checkout, then did a new clone and ran 'ant' at its root.
I still get the same error.
What am I missing ? I'm running the jruby executable in the bin folder of the git checkout, am I supposed to use an other jruby executable ?
I typically add the JRuby's bin directory to my PATH and then just invoke jruby.
At a minimum, jruby -v should work. jruby -e "require 'ffi'" should work, and the samples suggested above should be functional (ideally).
The error about not finding /jni/ppc-Linux/libjffi-0.6.so is interesting, since in your JAR file I only see libjffi-0.6.a, which is probably wrong, there should be shared lib there *.so, not the static *.a one.
Could you please check your environment and rebuild the ppc-Linux.jar so that it should contain the *.so file?
My mistake, using ./jruby, I get:
atoulme@build:~/jruby/bin> ./jruby ../samples/ffi/gettimeofday.rb
-
-
- glibc detected *** /shared/common/ibm-java-jdk-ppc-60/bin/java: double free or corruption (!prev): 0x624ffdc0 ***
======= Backtrace: =========
/lib/power5/libc.so.6[0xfe81944]
/lib/power5/libc.so.6(__libc_free+0xc8)[0xfe83638]
/home/data/users/atoulme/jruby/lib/native/ppc-Linux/libjffi-0.6.so[0xed4f0c8]
/home/data/users/atoulme/jruby/lib/native/ppc-Linux/libjffi-0.6.so[0xed51bb0]
/home/data/users/atoulme/jruby/lib/native/ppc-Linux/libjffi-0.6.so(Java_com_kenai_jffi_Foreign_invokeArrayO2Int32+0x60)[0xed51f00]
/opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so[0xfb03a70]
/opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so[0xfafe0a8]
/opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so[0xfafdf48]
/opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9prt24.so[0xfa20454]
/opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so[0xfafe15c]
/opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so[0xfaffec4]
/opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so[0xfafa6d0]
/shared/common/ibm-java-jdk-ppc-60/bin/java[0x10001d28]
/lib/power5/libpthread.so.0[0xffcec20]
/lib/power5/libc.so.6(__clone+0x84)[0xfee60e4]
======= Memory map: ========
00001000-00002000 rw-p 00001000 00:00 0
00100000-00103000 r-xp 00100000 00:00 0
0ed4a000-0ed5a000 r-xp 00000000 00:15 64035750 /home/data/users/atoulme/jruby/lib/native/ppc-Linux/libjffi-0.6.so
0ed5a000-0ed5b000 rw-p 00010000 00:15 64035750 /home/data/users/atoulme/jruby/lib/native/ppc-Linux/libjffi-0.6.so
0ed6b000-0ed74000 r-xp 00000000 08:06 694091587 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libnio.so
0ed74000-0ed83000 ---p 00009000 08:06 694091587 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libnio.so
0ed83000-0ed84000 rwxp 00008000 08:06 694091587 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libnio.so
0ed94000-0edaa000 r-xp 00000000 08:06 694091586 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libnet.so
0edaa000-0edb9000 ---p 00016000 08:06 694091586 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libnet.so
0edb9000-0edba000 rwxp 00015000 08:06 694091586 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libnet.so
0edba000-0edbb000 rwxp 0edba000 00:00 0
0edcb000-0eddb000 r-xp 00000000 08:06 694091601 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libzip.so
0eddb000-0edea000 ---p 00010000 08:06 694091601 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libzip.so
0edea000-0edec000 rwxp 0000f000 08:06 694091601 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libzip.so
0edec000-0eded000 rwxp 0edec000 00:00 0
0edfd000-0ee11000 r-xp 00000000 08:03 72208 /lib/libnsl-2.4.so
0ee11000-0ee21000 ---p 00014000 08:03 72208 /lib/libnsl-2.4.so
0ee21000-0ee22000 r--p 00014000 08:03 72208 /lib/libnsl-2.4.so
0ee22000-0ee23000 rw-p 00015000 08:03 72208 /lib/libnsl-2.4.so
0ee23000-0ee25000 rw-p 0ee23000 00:00 0
0ee35000-0ee5a000 r-xp 00000000 08:06 694091624 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjava.so
0ee5a000-0ee69000 ---p 00025000 08:06 694091624 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjava.so
0ee69000-0ee6c000 rwxp 00024000 08:06 694091624 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjava.so
0ee7c000-0ee9c000 r-xp 00000000 08:06 694091632 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9ute24.so
0ee9c000-0eeab000 ---p 00020000 08:06 694091632 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9ute24.so
0eeab000-0eeaf000 rwxp 0001f000 08:06 694091632 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9ute24.so
0eeaf000-0eeb0000 rwxp 0eeaf000 00:00 0
0eec0000-0eecb000 r-xp 00000000 08:03 804642 /lib/libnss_files-2.4.so
0eecb000-0eeda000 ---p 0000b000 08:03 804642 /lib/libnss_files-2.4.so
0eeda000-0eedb000 r--p 0000a000 08:03 804642 /lib/libnss_files-2.4.so
0eedb000-0eedc000 rw-p 0000b000 08:03 804642 /lib/libnss_files-2.4.so
0eeec000-0ef0c000 r-xp 00000000 08:06 694091631 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libiverel24.so
0ef0c000-0ef1b000 ---p 00020000 08:06 694091631 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libiverel24.so
0ef1b000-0ef23000 rwxp 0001f000 08:06 694091631 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libiverel24.so
0ef33000-0efbc000 r-xp 00000000 08:06 694091612 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjclscar_24.so
0efbc000-0efcb000 ---p 00089000 08:06 694091612 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjclscar_24.so
0efcb000-0efdd000 rwxp 00088000 08:06 694091612 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjclscar_24.so
0efdd000-0efde000 rwxp 0efdd000 00:00 0
0efee000-0f025000 r-xp 00000000 08:06 694091653 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vrb24.so
0f025000-0f034000 ---p 00037000 08:06 694091653 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vrb24.so
0f034000-0f040000 rwxp 00036000 08:06 694091653 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vrb24.so
0f050000-0f0a5000 r-xp 00000000 08:06 694091593 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9jvmti24.so
0f0a5000-0f0b4000 ---p 00055000 08:06 694091593 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9jvmti24.so
0f0b4000-0f0c6000 rwxp 00054000 08:06 694091593 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9jvmti24.so
0f0d6000-0f108000 r-xp 00000000 08:06 694091602 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9dyn24.so
0f108000-0f117000 ---p 00032000 08:06 694091602 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9dyn24.so
0f117000-0f121000 rwxp 00031000 08:06 694091602 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9dyn24.so
0f131000-0f1d2000 r-xp 00000000 08:06 694091652 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9gc24.so
0f1d2000-0f1e1000 ---p 000a1000 08:06 694091652 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9gc24.so
0f1e1000-0f202000 rwxp 000a0000 08:06 694091652 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9gc24.so
0f212000-0f235000 r-xp 00000000 08:06 694091658 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9bcv24.so
0f235000-0f244000 ---p 00023000 08:06 694091658 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9bcv24.so
0f244000-0f24b000 rwxp 00022000 08:06 694091658 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9bcv24.so
0f25b000-0f81e000 r-xp 00000000 08:06 694091628 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9jit24.so
0f81e000-0f82d000 ---p 005c3000 08:06 694091628 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9jit24.so
0f82d000-0f8d1000 rwxp 005c2000 08:06 694091628 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9jit24.so
0f8d1000-0f8d7000 rwxp 0f8d1000 00:00 0
0f8e7000-0f8fa000 r-xp 00000000 08:06 694091641 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9trc24.so
0f8fa000-0f909000 ---p 00013000 08:06 694091641 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9trc24.so
0f909000-0f90e000 rwxp 00012000 08:06 694091641 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9trc24.so
0f91e000-0f931000 r-xp 00000000 08:06 694091633 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9zlib24.so
0f931000-0f940000 ---p 00013000 08:06 694091633 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9zlib24.so
0f940000-0f943000 rwxp 00012000 08:06 694091633 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9zlib24.so
0f943000-0f944000 rwxp 0f943000 00:00 0
0f954000-0f985000 r-xp 00000000 08:06 694091621 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9dmp24.so
0f985000-0f994000 ---p 00031000 08:06 694091621 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9dmp24.so
0f994000-0f99d000 rwxp 00030000 08:06 694091621 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9dmp24.so
0f9ad000-0f9b3000 r-xp 00000000 08:03 56432 /usr/lib/libnuma.so.1
0f9b3000-0f9c2000 ---p 00006000 08:03 56432 /usr/lib/libnuma.so.1
0f9c2000-0f9c3000 rw-p 00005000 08:03 56432 /usr/lib/libnuma.so.1
0f9c3000-0f9c5000 rw-p 0f9c3000 00:00 0
0f9d5000-0f9dd000 r-xp 00000000 08:03 2002 /lib/power5/librt-2.4.so
0f9dd000-0f9ec000 ---p 00008000 08:03 2002 /lib/power5/librt-2.4.so
0f9ec000-0f9ed000 r--p 00007000 08:03 2002 /lib/power5/librt-2.4.so
0f9ed000-0f9ee000 rw-p 00008000 08:03 2002 /lib/power5/librt-2.4.so
0f9fe000-0fa3b000 r-xp 00000000 08:06 694091627 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9prt24.so
0fa3b000-0fa4a000 ---p 0003d000 08:06 694091627 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9prt24.so
0fa4a000-0fa58000 rwxp 0003c000 08:06 694091627 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9prt24.so
0fa58000-0fa5b000 rwxp 0fa58000 00:00 0
0fa6b000-0fa71000 r-xp 00000000 08:06 694091597 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9hookable24.so
0fa71000-0fa80000 ---p 00006000 08:06 694091597 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9hookable24.so
0fa80000-0fa82000 rwxp 00005000 08:06 694091597 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9hookable24.so
0fa92000-0faa5000 r-xp 00000000 08:06 694091617 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9thr24.so
0faa5000-0fab4000 ---p 00013000 08:06 694091617 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9thr24.so
0fab4000-0fab9000 rwxp 00012000 08:06 694091617 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9thr24.so
0fab9000-0faba000 rwxp 0fab9000 00:00 0
0faca000-0fb67000 r-xp 00000000 08:06 694091598 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so
0fb67000-0fb76000 ---p 0009d000 08:06 694091598 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so
0fb76000-0fb8f000 rwxp 0009c000 08:06 694091598 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libj9vm24.so
0fb8f000-0fb90000 rwxp 0fb8f000 00:00 0
0fba0000-0fba4000 r-xp 00000000 08:06 694091643 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjsig.so
0fba4000-0fbb3000 ---p 00004000 08:06 694091643 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjsig.so
0fbb3000-0fbb5000 rwxp 00003000 08:06 694091643 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/libjsig.so
0fbc5000-0fbd8000 r-xp 00000000 08:03 639617 /lib/libgcc_s.so.1
0fbd8000-0fbe7000 ---p 00013000 08:03 639617 /lib/libgcc_s.so.1
0fbe7000-0fbe8000 rw-p 00012000 08:03 639617 /lib/libgcc_s.so.1
0fbf8000-0fcbb000 r-xp 00000000 08:03 77439 /usr/lib/libstdc++.so.5.0.7
0fcbb000-0fcca000 ---p 000c3000 08:03 77439 /usr/lib/libstdc++.so.5.0.7
0fcca000-0fccf000 rwxp 000c2000 08:03 77439 /usr/lib/libstdc++.so.5.0.7
0fccf000-0fcd5000 rwxp 0fccf000 00:00 0
0fce5000-0fd8c000 r-xp 00000000 08:03 1071655 /lib/power5/libm-2.4.so
0fd8c000-0fd9b000 ---p 000a7000 08:03 1071655 /lib/power5/libm-2.4.so
0fd9b000-0fd9f000 r--p 000a6000 08:03 1071655 /lib/power5/libm-2.4.so
0fd9f000-0fda0000 rw-p 000aa000 08:03 1071655 /lib/power5/libm-2.4.so
0fdb0000-0fdda000 r-xp 00000000 08:06 694091579 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/j9vm/libjvm.so
0fdda000-0fde9000 ---p 0002a000 08:06 694091579 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/j9vm/libjvm.so
0fde9000-0fdf1000 rwxp 00029000 08:06 694091579 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/j9vm/libjvm.so
0fdf1000-0fdf5000 rwxp 0fdf1000 00:00 0
0fe05000-0ff54000 r-xp 00000000 08:03 1141134 /lib/power5/libc-2.4.so
0ff54000-0ff63000 ---p 0014f000 08:03 1141134 /lib/power5/libc-2.4.so
0ff63000-0ff65000 r--p 0014e000 08:03 1141134 /lib/power5/libc-2.4.so
0ff65000-0ff69000 rw-p 00150000 08:03 1141134 /lib/power5/libc-2.4.so
0ff69000-0ff6c000 rw-p 0ff69000 00:00 0
0ff7c000-0ff7f000 r-xp 00000000 08:03 804381 /lib/libdl-2.4.so
0ff7f000-0ff8e000 ---p 00003000 08:03 804381 /lib/libdl-2.4.so
0ff8e000-0ff8f000 r--p 00002000 08:03 804381 /lib/libdl-2.4.so
0ff8f000-0ff90000 rw-p 00003000 08:03 804381 /lib/libdl-2.4.so
0ffa0000-0ffa7000 r-xp 00000000 08:06 694091577 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/jli/libjli.so
0ffa7000-0ffb6000 ---p 00007000 08:06 694091577 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/jli/libjli.so
0ffb6000-0ffb9000 rwxp 00006000 08:06 694091577 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ppc/jli/libjli.so
0ffc9000-0ffdd000 r-xp 00000000 08:03 1141133 /lib/power5/libpthread-2.4.so
0ffdd000-0ffec000 ---p 00014000 08:03 1141133 /lib/power5/libpthread-2.4.so
0ffec000-0ffed000 r--p 00013000 08:03 1141133 /lib/power5/libpthread-2.4.so
0ffed000-0ffee000 rw-p 00014000 08:03 1141133 /lib/power5/libpthread-2.4.so
0ffee000-0fff0000 rw-p 0ffee000 00:00 0
10000000-1000c000 r-xp 00000000 08:06 694091049 /opt/ibm/ibm-java-jdk-ppc-60/jre/bin/java
1001b000-1001c000 rwxp 0000b000 08:06 694091049 /opt/ibm/ibm-java-jdk-ppc-60/jre/bin/java
1001c000-102d0000 rwxp 1001c000 00:00 0 [heap]
40000000-4001e000 r-xp 00000000 08:03 53292 /lib/ld-2.4.so
4001e000-40020000 rw-p 4001e000 00:00 0
40020000-40021000 r--p 00000000 08:03 1072379 /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
40021000-40028000 r--s 00000000 08:03 1140398 /usr/lib/gconv/gconv-modules.cache
40028000-40029000 r--p 00000000 08:03 1072391 /usr/lib/locale/en_US.utf8/LC_MEASUREMENT
40029000-4002a000 r--p 00000000 08:03 1072389 /usr/lib/locale/en_US.utf8/LC_TELEPHONE
4002a000-4002b000 r--p 00000000 08:03 20678 /usr/lib/locale/en_US.utf8/LC_ADDRESS
4002b000-4002c000 r--p 00000000 08:03 1072390 /usr/lib/locale/en_US.utf8/LC_NAME
4002c000-4002d000 r--p 00000000 08:03 22717 /usr/lib/locale/en_US.utf8/LC_PAPER
4002d000-4002e000 r--p 00000000 08:03 22795 /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
4002e000-4002f000 r--p 0001e000 08:03 53292 /lib/ld-2.4.so
4002f000-40030000 rw-p 0001f000 08:03 53292 /lib/ld-2.4.so
40030000-40054000 rw-p 40030000 00:00 0
40054000-40055000 ---p 40054000 00:00 0
40055000-40154000 rwxp 40055000 00:00 0
40154000-40155000 r--p 00000000 08:03 1072380 /usr/lib/locale/en_US.utf8/LC_MONETARY
40155000-4022c000 r--p 00000000 08:03 1072401 /usr/lib/locale/en_US.utf8/LC_COLLATE
4022c000-4022d000 r--p 00000000 08:03 1072381 /usr/lib/locale/en_US.utf8/LC_TIME
4022d000-4022e000 r--p 00000000 08:03 20314 /usr/lib/locale/en_US.utf8/LC_NUMERIC
4022e000-40261000 r--p 00000000 08:03 22906 /usr/lib/locale/en_US.utf8/LC_CTYPE
40261000-40262000 ---p 40261000 00:00 0
40262000-40269000 rwxp 40262000 00:00 0
40269000-40d02000 rw-p 40269000 00:00 0
40d02000-5f669000 ---p 40d02000 00:00 0
5f669000-5ff3e000 rw-p 5f669000 00:00 0
5ff3e000-6073e000 rwxp 5ff3e000 00:00 0
6073e000-60f3f000 rw-p 6073e000 00:00 0
60f3f000-60f40000 ---p 60f3f000 00:00 0
60f40000-60f7f000 rwxp 60f40000 00:00 0
60f7f000-60fa1000 rw-p 60f7f000 00:00 0
60fa1000-60fa2000 ---p 60fa1000 00:00 0
60fa2000-60fa9000 rwxp 60fa2000 00:00 0
60fa9000-60feb000 rw-p 60fa9000 00:00 0
60feb000-60fec000 ---p 60feb000 00:00 0
60fec000-60ff3000 rwxp 60fec000 00:00 0
60ff3000-60ff7000 r--s 0004c000 08:06 694092020 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/vm.jar
60ff7000-60ff9000 r--s 00001000 08:06 694091988 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/annotation.jar
60ff9000-60ffe000 r--s 00022000 08:06 694092044 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/beans.jar
60ffe000-61000000 r--s 0000a000 08:06 694092050 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/logging.jar
61000000-61100000 rw-p 61000000 00:00 0
61100000-61184000 rw-p 61100000 00:00 0
61184000-61185000 ---p 61184000 00:00 0
61185000-611c4000 rwxp 61185000 00:00 0
611c4000-611e5000 rw-p 611c4000 00:00 0
611e5000-611ec000 r--s 00049000 08:06 694091831 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/java.util.jar
611ec000-611f2000 r--s 00028000 08:06 694091824 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/jndi.jar
611f2000-611f9000 r--s 00032000 08:06 694092040 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/security.jar
611f9000-611fd000 r--s 00018000 08:06 694091829 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/sql.jar
611fd000-611ff000 r--s 0001f000 08:06 694091875 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmcertpathfw.jar
611ff000-61200000 r--s 00006000 08:06 694091835 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmjgssfw.jar
61200000-612ff000 rw-p 61200000 00:00 0
612ff000-61300000 ---p 612ff000 00:00 0
61300000-61301000 ---p 61300000 00:00 0
61301000-61340000 rwxp 61301000 00:00 0
61340000-61341000 ---p 61340000 00:00 0
61341000-61380000 rwxp 61341000 00:00 0
61380000-61381000 ---p 61380000 00:00 0
61381000-613c0000 rwxp 61381000 00:00 0
613c0000-613c1000 ---p 613c0000 00:00 0
613c1000-61400000 rwxp 613c1000 00:00 0
61400000-61401000 ---p 61400000 00:00 0
61401000-61440000 rwxp 61401000 00:00 0
61440000-61441000 ---p 61440000 00:00 0
61441000-61480000 rwxp 61441000 00:00 0
61480000-61481000 ---p 61480000 00:00 0
61481000-614c0000 rwxp 61481000 00:00 0
614c0000-614c1000 ---p 614c0000 00:00 0
614c1000-61500000 rwxp 614c1000 00:00 0
61500000-61566000 rw-p 61500000 00:00 0
61566000-61573000 r--s 0005a000 08:06 694091808 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmorbapi.jar
61573000-61575000 r--s 0000d000 08:06 694091812 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmjssefw.jar
61575000-61725000 rw-p 61575000 00:00 0
61725000-61729000 r--s 00016000 00:15 63833121 /home/data/users/atoulme/jruby/lib/profile.jar
6172c000-617e3000 rw-p 6172c000 00:00 0
617e3000-617f5000 r--s 0010c000 08:06 694091815 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmorb.jar
617f5000-617ff000 r--s 00079000 08:06 694091872 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmcfw.jar
617ff000-61800000 r--s 00002000 08:06 694091813 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmsaslfw.jar
61800000-618f9000 rw-p 61800000 00:00 0
618f9000-61900000 ---p 618f9000 00:00 0
61900000-619f3000 rw-p 61900000 00:00 0
619f3000-61a98000 r--s 00742000 00:15 63949316 /home/data/users/atoulme/jruby/lib/jruby.jar
61a98000-61afb000 rw-p 61a98000 00:00 0
61afb000-61afd000 r--s 00016000 08:06 694091821 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmjcefw.jar
61afd000-61aff000 r--s 00053000 08:06 694091983 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmcertpathprovider.jar
61aff000-61b00000 r--s 00000000 08:06 694092022 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/management-agent.jar
61b00000-61bfd000 rw-p 61b00000 00:00 0
61bfd000-61c00000 ---p 61bfd000 00:00 0
61c00000-61c21000 rw-p 61c00000 00:00 0
61c21000-61d50000 r--s 0116f000 08:06 694091989 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/rt.jar
61d50000-61d77000 rw-p 61d50000 00:00 0
61d77000-61d8b000 r--s 007fb000 08:06 694091976 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/charsets.jar
61d8b000-61d94000 r--s 00072000 08:06 694091896 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/resources.jar
61d94000-61d9c000 r--s 00112000 08:06 694091973 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmpkcs.jar
61d9c000-61da4000 r--s 000d9000 08:06 694091792 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmjgssprovider.jar
61da4000-61da9000 r--s 00061000 08:06 694092026 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmjsseprovider2.jar
61da9000-61dac000 r--s 00023000 08:06 694092031 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ibmxmlcrypto.jar
61dac000-61e26000 r--s 007f9000 08:06 694091752 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/xml.jar
61e26000-61e28000 r--s 00014000 08:06 694091663 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/jlm.jar
61e28000-61e2d000 r--s 00054000 08:06 694092036 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/javascript.jar
61e2d000-61e4e000 rw-p 61e2d000 00:00 0
61e4e000-61e50000 r--s 00024000 08:06 694091557 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/ibmxmlencprovider.jar
61e50000-61e52000 r--s 00001000 08:06 694091558 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/dnsns.jar
61e52000-61e57000 r--s 00070000 08:06 694091559 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/IBMKeyManagementServer.jar
61e57000-61e5b000 r--s 00052000 08:06 694091560 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/ibmpkcs11impl.jar
61e5b000-61e5e000 r--s 00019000 08:06 694091561 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/dtfjview.jar
61e5e000-61e62000 r--s 00037000 08:06 694091562 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/ibmjcefips.jar
61e62000-61e65000 r--s 0002a000 08:06 694091563 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/CmpCrmf.jar
61e65000-61e69000 r--s 0002f000 08:06 694091564 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/ibmcmsprovider.jar
61e69000-61e6b000 r--s 00003000 08:06 694091565 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/dtfj-interface.jar
61e6b000-61e80000 r--s 00111000 08:06 694091566 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/gskikm.jar
61e80000-61e84000 r--s 00040000 08:06 694091567 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/jdmpview.jar
61e84000-61e88000 r--s 00035000 08:06 694091568 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/ibmkeycert.jar
61e88000-61e8f000 r--s 000e4000 08:06 694091569 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/ibmjceprovider.jar
61e8f000-61e9a000 r--s 00079000 08:06 694091570 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/dtfj.jar
61e9a000-61e9c000 r--s 0000f000 08:06 694091571 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/ibmsaslprovider.jar
61e9c000-61e9e000 r--s 00004000 08:06 694091572 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/xmlencfw.jar
61e9e000-61ea0000 r--s 0000b000 08:06 694091573 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/jaccess.jar
61ea0000-61ea3000 r--s 00070000 08:06 694091574 /opt/ibm/ibm-java-jdk-ppc-60/jre/lib/ext/localedata.jar
61ea3000-61ee5000 rw-p 61ea3000 00:00 0
61ee5000-61ee9000 r--s 00025000 00:15 63834909 /home/data/users/atoulme/jruby/lib/ruby/site_ruby/shared/yecht.jar
61f00000-61fff000 rw-p 61f00000 00:00 0
61fff000-62000000 ---p 61fff000 00:00 0
62000000-62182000 rw-p 62000000 00:00 0
62182000-62183000 ---p 62182000 00:00 0
62183000-621c2000 rwxp 62183000 00:00 0
621c2000-621e3000 rw-p 621c2000 00:00 0
62200000-622f7000 rw-p 62200000 00:00 0
622f7000-62300000 ---p 622f7000 00:00 0
62300000-623e7000 rw-p 62300000 00:00 0
62400000-62500000 rw-p 62400000 00:00 0
62500000-62542000 rw-p 62500000 00:00 0
62600000-62648000 rw-p 62600000 00:00 0
62648000-62700000 ---p 62648000 00:00 0
ffb65000-ffb7a000 rwxp ffb65000 00:00 0 [stack]
JVMDUMP006I Processing dump event "abort", detail "" - please wait.
JVMDUMP007I JVM Requesting System dump using '/home/data/users/atoulme/jruby/bin/core.20100102.135037.30905.0001.dmp'
- glibc detected *** /shared/common/ibm-java-jdk-ppc-60/bin/java: double free or corruption (!prev): 0x624ffdc0 ***
-
And then it hangs.
Antoine: This looks like it may be a bug in jffi, in the native code...but it does appear to be loading now.
Are you able to at least do "jruby -e "require 'ffi'"? If you can do that, it's at least loading the native bits.
I just tried that. It seems to be working (as it is not complaining).
You might want to clone the latest jffi 1.0 tree (http://github.com/wmeissner/jffi), build it and drop both jffi.jar and jffi-ppc-Linux.jar into build_lib, then rebuild jruby.
There were some bugs in the older version of libffi used in jffi-0.6 that seemingly affected powerpc on linux (but didn't seem to affect AIX).
Of course, there could still be other big-endian bugs in jffi itself somewhere. There are only three people that run it on non-x86/86_64 arches, so it doesn't get a lot of testing.
Here is a new attempt with the latest trunk on jruby and the 1.0 jffi code.
Looks like tests don't pass because a launcher gem can't be installed.
bin/jruby samples/ffi/gettimeofday.rb
t.tv_sec=1267203965 t.tv_usec=304493
bin/jruby samples/ffi/qsort.rb
Before qsort 2, 1
After qsort 1, 2
bin/jruby -e 'puts $$'
11587
Antoine, since those simple tests work, you might want to run the whole ruby-ffi test suite.
git clone git://github.com/ffi/ffi.git ruby-ffi.git cd ruby-ffi.git # build the test helper lib rake build/libtest.so /path/to/jruby.git/bin/jruby -S spec spec/ffi
It returns one failure:
1)
'Callback with :bool (true) argument' FAILED
expected true, got false
/home/data/users/atoulme/ruby-ffi.git/spec/ffi/callback_spec.rb:468:
I think I fixed this in jruby commit 1065897e5ecce3c6767471e86541f5ec917db636
Just update to the latest jruby (no need to rebuild jffi) and see if it fixes it.
You're going to have to debug this one yourself.
Have a look at src/org/jruby/ext/ffi/jffi/CallbackManager.java line 493
Where you see the code
case BOOL: return runtime.newBoolean(buffer.getByte(index) != 0);
You'll want to either use a debugger and put a breakpoint there, or add some debug trace to print out the value being read in for the argument.
For a false value, it should naturally be all bits cleared, for a true value, it should have the value 0x01. You might also want to print out 2, 4, 8 bytes at the same index and see what values are there.
Hmm. I tried something stupid and replaced that line by "return true". It didn't help though.
Added cut down version of ruby-ffi callback spec for testing bool arguments to callbacks.
Run this from the ruby-ffi.git dir (it needs to load the libtest.so).
Can you print out the values (in hex) that fromNative is reading for bool arguments?
You might also want to put some more trace in AbstractCallbackProxy#invoke() to make sure it is really getting called.
Also, make sure you're doing 'ant clean' so you get a full rebuild of jruby.
Wayne, I apologize: cleaning and rebuilding jruby, all specs pass as they should.
I guess we are good to go now ?
I committed your jffi-ppc-Linux.jar in commit 70acb3c1d6570be6d142f159a4d0b1c036d7fe38
For an extra sanity check, can you update jruby and make sure you have a clean tree (i.e. no mods, its using the checked in version of jffi-ppc-Linux.jar) then rebuild & test jruby, and run it against the FFI specs again.
If that all works, then I say we're good to go.
I have failures while running ant clean test, see attached files. All specs pass.
I worked with Wayne extensively yesterday and we got to the point where the lib is created in 64 bits allright, but we could not run the specs.
Without a 64 bit JVM I get this:
http://gist.github.com/317358
With a 64 bit JVM I get:
http://gist.github.com/317360
So status on this: we have been successful doing the 32 bit version of the jar, but there are issues with 64 bit for some reason (see the gists in my previous comment).
We are good to go with 32 bits for now.
Resolving as incomplete. We have had many iterations of jffi stuff since this time, so if it's not working please open a new bug.
Antoine, please take a look at
JRUBY-3915for instructions on how to provide the bindings. Once you have the compiled JAR file, just attach it to this bug report.