On Thu, 3 May 2012, Roman Chyla wrote:

We use JCC to run Java inside Python as well Python inside Java. I
have now discovered one interesting situation.

I have a Hudson server that builds and tests our code. Hudson will
create its own python virtualenv (based on Python 2.7) and using it
builds JCC and Pylucene. Then Hudson also builds our own code (we
import pylucene and wrap solr with jcc). And it works great, all sorts
of unittests pass.


So I thought 'let me take JCC and Pylucene built by Hudson and install
it into my Python' (note: it is the same machine, so it should be
based on the same Python interpreter)

But are the Java VMs the same ?

Andi..


While it works if I run the python code (that imports java),
Interestingly enough, it fails when I run the java (that imports
Python)


org.apache.jcc.PythonException: An error occurred while creating Java VM
Traceback (most recent call last):
 File "/dvt/workspace/montysolr/src/python/montysolr/tests/basic/bridge.py",
line 2, in <module>
   from montysolr.initvm import montysolr_java as sj
 File "/dvt/workspace/montysolr/src/python/montysolr/initvm.py", line
48, in <module>
   montysolr_java.initVM(os.pathsep.join([lucene.CLASSPATH,
solr_java.CLASSPATH, montysolr_java.CLASSPATH, _classpath]))
ValueError: An error occurred while creating Java VM

        at org.apache.jcc.PythonVM.instantiate(Native Method)
        at invenio.montysolr.jni.PythonVMBridge.start(MontySolrVM.java:287)
        at invenio.montysolr.jni.PythonVMBridge.start(MontySolrVM.java:277)
        at invenio.montysolr.jni.MontySolrVM.getBridge(MontySolrVM.java:161)


So, first I thought that I should blame the python virtualenv and that
I cannot re-use those eggs (ie. I have to build JCC and Pylucene
default Python). But in fact if I keep the JCC built by Hudson and
just replace the Pylucene, then it starts to work again. I can even
first compile our own project and include the 'broken' pylucene in it
(unittest fail). Then I replace just the pylucene and everything works
again.

It is somewhat puzzling. I'd expect that if I use Hudson eggs that
they will either both work or both fail.

So I thought this might be an early warning sign, something that needs
your attention. I am not sure how to proceed to analyze the problem.

Thanks,

 roman




-----

ldd for the libraries:

rchyla@diana /dvt/workspace/pylucene_3_1_0 $ ldd
/usr/local/lib/python2.7/dist-packages/JCC-2.8-py2.7-linux-x86_64.egg/jcc/_jcc.so
        linux-vdso.so.1 =>  (0x00007fff7f378000)
        libjava.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libjava.so
(0x00007f97a987f000)
        libjvm.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/server/libjvm.so
(0x00007f97a8cb7000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007f97a8996000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f97a8714000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 
(0x00007f97a84fd000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007f97a82e1000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f97a7f5a000)
        libverify.so =>
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libverify.so
(0x00007f97a7d4a000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f97a7b32000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f97a792e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f97a9d2e000)

rchyla@diana /dvt/workspace/pylucene_3_1_0 $ ldd
/usr/local/lib/python2.7/dist-packages/lucene-3.1.0-py2.7-linux-x86_64.egg/lucene/_lucene.so
       linux-vdso.so.1 =>  (0x00007fffc31ff000)
        libjcc.so => 
/var/lib/hudson-local/hudson/jobs/00-JCC/workspace/dist/libjcc.so
(0x00007fab18f7b000)
        libjava.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libjava.so
(0x00007fab18d4a000)
        libjvm.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/server/libjvm.so
(0x00007fab18183000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007fab17e62000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fab17bdf000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 
(0x00007fab179c9000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007fab177ad000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fab17425000)
        libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007fab16f28000)
        libverify.so =>
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libverify.so
(0x00007fab16d18000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fab16b00000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fab168fc000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fab19e83000)
        libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
(0x00007fab166a9000)
        libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
(0x00007fab162e3000)
        libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007fab160cd000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fab15ec9000)

rchyla@diana /dvt/workspace/pylucene_3_1_0 $ ldd
/var/lib/hudson-local/hudson/jobs/01-PYLUCENE/workspace/dist/lucene/_lucene.so
        linux-vdso.so.1 =>  (0x00007fff1513c000)
        libjcc.so => 
/var/lib/hudson-local/hudson/jobs/00-JCC/workspace/dist/libjcc.so
(0x00007f6770857000)
        libjava.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libjava.so
(0x00007f6770626000)
        libjvm.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/server/libjvm.so
(0x00007f676fa5f000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007f676f73e000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f676f4bb000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 
(0x00007f676f2a5000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007f676f089000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f676ed01000)
        libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f676e804000)
        libverify.so =>
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libverify.so
(0x00007f676e5f4000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f676e3dc000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f676e1d8000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f677175f000)
        libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
(0x00007f676df85000)
        libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
(0x00007f676dbbf000)
        libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007f676d9a9000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f676d7a5000)

rchyla@diana /dvt/workspace/pylucene_3_1_0 $ ldd
/dvt/workspace/montysolr/build/dist/montysolr_java/_montysolr_java.so
        linux-vdso.so.1 =>  (0x00007fff525ff000)
        libjcc.so => 
/usr/local/lib/python2.7/dist-packages/JCC-2.8-py2.7-linux-x86_64.egg/libjcc.so
(0x00007f90a3c41000)
        libjava.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libjava.so
(0x00007f90a3a10000)
        libjvm.so => 
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/server/libjvm.so
(0x00007f90a2e49000)
        
/usr/local/lib/python2.7/dist-packages/lucene-3.1.0-py2.7-linux-x86_64.egg/lucene/_lucene.so
(0x00007f90a2153000)
        /dvt/workspace/montysolr/build/dist/solr_java/_solr_java.so
(0x00007f90a1658000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007f90a1337000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f90a10b5000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 
(0x00007f90a0e9e000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007f90a0c82000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f90a08fb000)
        libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f90a03fd000)
        libverify.so =>
/usr/lib/jvm/java-6-openjdk-amd64//jre/lib/amd64/libverify.so
(0x00007f90a01ee000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f909ffd6000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f909fdd1000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f90a40a4000)
        libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
(0x00007f909fb7f000)
        libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
(0x00007f909f7b8000)
        libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007f909f5a2000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f909f39f000)

Reply via email to