From: <ki...@cs...> - 2000-11-30 03:00:39
|
Hi, Stefan, couldn't try your test as given because you didn't supply HelloWorld.h, but I eliminated the java stuff and ran several times the program below. In none of the cases (redhat6.1) did I get a coredump. I might still be an xsb bug, because it is known to have hard-to-reproduce memory bugs. But is could also be something else. Try the program below and see if it crashes on your system. --michael //#include <jni.h> //#include "HelloWorld.h" #include <stdio.h> /* The cinterf.h for XSB */ #include <cinterf.h> //JNIEXPORT void JNICALL //Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj){ main(argc,argv){ int rcode; int myargc = 2; char *myargv[2]; myargv[0] = "/home/users/kifer/XSB/XSB/"; myargv[1] = "-n"; xsb_init(myargc,myargv); printf("Hello world!\n"); return; } > Hi XSBers, > > I try to built a Java Native Interface for XSB: I want to be able to > access XSB from Java directly (without using TCP/IP as e.g. Interprolog does). > I'am working with Linux Redhat 6.2 and using Suns JDK1.3. > I've written (or copied together) the following C-Code (HelloWorld.c): > This is just an example that initializes XSB (and prints out "Hello World"). > > #include <jni.h> > #include "HelloWorld.h" > #include <stdio.h > /* The cinterf.h for XSB */ > #include <cinterf.h> > JNIEXPORT void JNICALL > Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj){ > int rcode; > int myargc = 2; > char *myargv[2]; > myargv[0] = "/local/xsb/XSB"; > myargv[1] = "-n"; > xsb_init(myargc,myargv); > printf("Hello world!\n"); > return; > } > **************************************************************************** > > I produced a shared libarary libhello.so, that consists of XSB.o, HelloWorld.o > and the required libraries. > The following Java-Program loads libhello.so and calls the native method: > > class HelloWorld { > public native void displayHelloWorld(); > static { System.loadLibrary("hello"); } > public static void main(String[] args) { > new HelloWorld().displayHelloWorld(); > } > } > > If I now do a "java HelloWorld", sometimes the world is nice and I get: > > > java HelloWorld > [xsb_configuration loaded] > [sysinitrc loaded] > [packaging loaded] > Hello world! > > which is exactly what I would expect. > But usually the world is not nice and I get: > > ++Memory violation occurred during evaluation. > ++Please report this bug using the XSB bug tracking system: > ++ http://sourceforge.net/bugs/?group_id=1176 > ++and to xsb...@li.... > ++Please supply the steps necessary to reproduce the bug. > ! Aborting... > > ++Memory violation occurred during evaluation. > ++Please report this bug using the XSB bug tracking system: > ++ http://sourceforge.net/bugs/?group_id=1176 > ++and to xsb...@li.... > ++Please supply the steps necessary to reproduce the bug. > ! Aborting... > etc. > There was no difference between the two calls - sometimes the > call succeeds, sometimes (more often) not. > Any idea what this could be? (Alignment?) > (If it helps I can of course also send the Makefile etc.) > > Thanks a lot and all the best, > > Stefan Decker > > _______________________________________________ > Xsb-development mailing list > Xsb...@li... > http://lists.sourceforge.net/mailman/listinfo/xsb-development |