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

Christian Nolte <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
-----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-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.