[gcj+cni] Segmentation fault when accessing java code from c++

Christian Nolte ch.nolte@noltec.org
Wed Apr 23 20:26:00 GMT 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hi,

I have a simple example here which I cannot get to run correctly. I want
 to compile Java-Code to a native shared object and access this code
from C++. I have the following code:

- --- Test.java
public class Test {

  public static void main(String[] args) {
    try {
      System.out.println(args[0]);
    } catch (Exception e) {
      System.out.println("no options provided");
    }
  }

  public static void test() {
    System.out.println("test() called");
  }

  public void test2() {
   System.out.println("test2() called");
  }
}
- ---

I compile this to the so 'libtest.so' in the following manner:

	gcj Test.java -lgij -o libtest.so -shared -fPIC

I then generate the appropriate C++ header like this:

	gcjh --classpath=. Test

Then I compile the following C++-Code to the binary 'testprog':

- --- Test.cpp
#include <gcj/cni.h>

#include "Test.h"

int main() {
  Test t;
  t.test2();
}
- ---

	g++ Test.cpp -ltest -L.

This all works fine and without any problem. When I run the app I get a
segmentation fault:

[nolte@ravine java-test]$ export LD_LIBRARY_PATH=`pwd`
[nolte@ravine java-test]$ ./testprog
Segmentation fault

Valgrind shows many problems in /usr/lib/libgcj.so.8rh.0.0 (Use of
uninitialised value). The gdb backtrace is:

- ---
(gdb) bt
#0  0x039fc5b1 in _Jv_equalUtf8Consts () from /usr/lib/libgcj.so.8rh
#1  0x03a48b67 in _Jv_GetMethodLocal () from /usr/lib/libgcj.so.8rh
#2  0x03a4b024 in java::lang::Class::initializeClass () from
/usr/lib/libgcj.so.8rh
#3  0x03a4b069 in java::lang::Class::initializeClass () from
/usr/lib/libgcj.so.8rh
#4  0x03a4c626 in _Jv_InitClass () from /usr/lib/libgcj.so.8rh
#5  0x00111bd6 in Test.test2()void () from
/home/nolte/Desktop/java-test/libtest.so
#6  0x080485cb in main ()
- ---

Am I doing something wrong, i.e. do I miss some preinitialization which
is needed to get CNI working? Or is this a bug in my libgcj?

Best regards,
Christian

- --
   For more than 4 generations the IT Professionals were the
   guardians of quality and stability in software. Before the
   dark times.	Before Microsoft...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFID5tyCNjA0nfhW7wRAlgFAJ9zdaZ8OEkdTXcuRYM1pULEf1fSaQCguG6P
awdtApoTOJi1VzCV8sPMmHs=
=9VUD
-----END PGP SIGNATURE-----



More information about the Java mailing list