To add another comment...

be sure you have a version > JDK1.1.3, because until 1.1.3 JNI didn't 
work for me on Linux. JDK1.1.5 did work however!

Cheers,

Addy.

----------
| From: rmlynch /  mime, , , [EMAIL PROTECTED]
| To: java-linux /  mime, , , [EMAIL PROTECTED]
| Subject: SEGV from iostream in native method on Linux, FreeBSD, not Windoze
| Date: Monday, September 14, 1998 11:01PM
|
| Hi-
|
| Apologize if this is a FAQ.  It seems that a "Hello World" JNI demo (see
| below .sig) that uses iostreams for output give a SEGV on Linux and
| FreeBSD, but not Windoze.  I didn't have the compiler to build a .dll to
| see the latter case with my own eyes, but someone did it for me and it
| works on Windoze fer shure, I've seen it in action.
|
| Wonder how come?
|
| Bob L.
|
| P.S. Of course the example works when using <stdio.h> and printf(..).
| --
| Robert Lynch-Berkeley CA [EMAIL PROTECTED]
| http://www.best.com/~rmlynch/
| --
| class test
| {
|    public native void display();
|
|    static { System.loadLibrary("hello"); }
|
|    public static void main(String[] args)
|    {
|       new test().display();
|    }
| }
| ---
| /* hello.C */
| #include <jni.h>
| #include "test.h"
| #include <iostream.h>
|
| JNIEXPORT void JNICALL
| Java_test_display(JNIEnv *env, jobject obj)
| {
|  cout << "Hello world!\n" << endl;
|  return;
| }
| ---
| [user@ravel native]$ g++ -Wall -shared -fPIC
| -I/usr/local/jdk1.1.6/include -I/usr/local/jdk1.1.6/include/genunix -o
| libhello.so hello.C
| ---
| [user@ravel native]$ LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH java test > err
| 2>&1
| Aborted
| [user@ravel native]$ more err
| SIGSEGV   11*  segmentation violation
|         stackbase=0xbffff668, stackpointer=0xbffff56c
|
| Full thread dump:
|     "Finalizer thread" (TID:0x40660208, sys_thread_t:0x413a4e0c,
| state:R) prio=1
|     "Async Garbage Collector" (TID:0x40660250, sys_thread_t:0x41383e0c,
| state:R)
|  prio=1
|     "Idle thread" (TID:0x40660298, sys_thread_t:0x41362e0c, state:R)
| prio=0
|     "Clock" (TID:0x40660088, sys_thread_t:0x41341e0c, state:CW) prio=12
|     "main" (TID:0x406600b0, sys_thread_t:0x81a4908, state:R) prio=5
| *current thr
| ead*
|         test.main(test.java:9)
| Monitor Cache Dump:
| Registered Monitor Dump:
|     Thread queue lock: <unowned>
|     Name and type hash table lock: <unowned>
|     String intern lock: <unowned>
|     JNI pinning lock: <unowned>
|     JNI global reference lock: <unowned>
|     BinClass lock: <unowned>
|     Class loading lock: <unowned>
|     Java stack lock: <unowned>
|     Code rewrite lock: <unowned>
|     Heap lock: <unowned>
|     Has finalization queue lock: <unowned>
|     Finalize me queue lock: <unowned>
|     Monitor IO lock: <unowned>
|     Child death monitor: <unowned>
|     Event monitor: <unowned>
|     I/O monitor: <unowned>
|     Alarm monitor: <unowned>
|         Waiting to be notified:
|             "Clock" (0x41341e0c)
|     Monitor registry: owner "main" (0x81a4908, 1 entry)
| Thread Alarm Q:
| ----------END msg.------------
| 

Reply via email to