-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
1.1.1
-
None
-
sparc
-
solaris_2.5
The attached example crashes, with the following printout (with stack trace in
the stack.trace attachment):
Script started on Fri Apr 25 10:09:02 1997
<noam:/home/jyl/ws/java> minimal
usage: minimal windowID width heigth
<noam:/home/jyl/ws/java> minimal 1 2 3
got minimal 1 2 3
going to call constructor, get ready for crash...
SIGSEGV 11* segmentation violation
si_signo [11]: SIGSEGV 11* segmentation violation
si_errno [0]: Error 0
si_code [1]: SEGV_ACCERR [addr: 0x84]
stackbase=EFFFF908, stackpointer=EFFFF6B0
Full thread dump:
"Finalizer thread" (TID:0xee700220, sys_thread_t:0xee3f1de0, state:R) prio=1
"Async Garbage Collector" (TID:0xee7001d8, sys_thread_t:0xef441de0, state:R) prio=1
"Idle thread" (TID:0xee700190, sys_thread_t:0xef471de0, state:R) prio=0
"Clock" (TID:0xee7000d0, sys_thread_t:0xef531de0, state:CW) prio=12
"main" (TID:0xee7000a8, sys_thread_t:0x41290, state:R) prio=5 *current thread*
sun.awt.motif.MComponentPeer.<init>(MComponentPeer.java:98)
sun.awt.motif.MCanvasPeer.<init>(MCanvasPeer.java:39)
sun.awt.motif.MPanelPeer.<init>(MPanelPeer.java:33)
sun.awt.motif.MFramePeer.<init>(MFramePeer.java:47)
sun.awt.motif.MEmbeddedFramePeer.<init>(MEmbeddedFramePeer.java:29)
sun.awt.motif.MEmbeddedFrame.<init>(MEmbeddedFrame.java:32)
EmbeddedFrame.<init>(EmbeddedFrame.java:6)
Monitor Cache Dump:
<unknown key> (0x0): owner "main" (0x41290, 1 entry)
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"
Sbrk lock: <unowned>
Monitor cache expansion lock: <unowned>
Monitor registry: owner "main" (0x41290, 1 entry)
Thread Alarm Q:
Abort
<noam:/home/jyl/ws/java> exit
<noam:/home/jyl/ws/java>
script done on Fri Apr 25 10:09:12 1997
---- minimal.c -----------------------------------------------------------------
#include <jni.h>
int
main(argc, argv)
int argc;
char **argv;
{
int w, h, i;
JNIEnv *env;
JavaVM *jvm;
JDK1_1InitArgs vm_args;
jint res;
jclass cls;
jmethodID mid;
jobject obj;
/*
* Check that sufficient args and the right kinds are supplied:
*/
if (argc != 4) {
fprintf(stderr, "usage: %s windowID width heigth\n", argv[0]);
exit(1);
}
i = atoi(argv[1]);
w = atoi(argv[2]);
h = atoi(argv[3]);
fprintf(stderr, "got %s %d %d %d\n", argv[0], i, w, h);
/*
* Get default args for the JVM and create JVM.
*/
JNI_GetDefaultJavaVMInitArgs(&vm_args);
res = JNI_CreateJavaVM(&jvm,&env,&vm_args);
if (res < 0) {
fprintf(stderr, "Can't create Java VM\n");
exit(1);
}
/*
* Find *my* EmbeddedFrame, defined in EmbeddedFrame.java.
*/
cls = (*env)->FindClass(env, "EmbeddedFrame");
if (cls == 0) {
fprintf(stderr, "Can't find class EmbeddedFrame\n");
exit(1);
}
/*
* Get the method ID for the constructor.
*/
mid = (*env)->GetMethodID(env, cls, "<init>", "(III)V");
if (mid == NULL) {
fprintf(stderr, "Can't find constructor for EmbeddedFrame\n");
exit(1);
}
/*
* Call the constructor.
*/
fprintf(stderr, "going to call constructor, get ready for crash...\n");
obj = (*env)->NewObject(env, cls, mid, i, w, h);
if (obj == 0) {
fprintf(stderr, "Can't construct new EmbeddedFrame\n");
exit(1);
}
}
----- EmbeddedFrame.java -----------------------------------------------------
import java.awt.*;
import sun.awt.*;
public class EmbeddedFrame extends sun.awt.motif.MEmbeddedFrame {
public EmbeddedFrame(int winID, int width, int height) {
super(winID);
// Set the window size and show everything:
this.setSize(width,height);
this.show();
}
}
----- Makefile --------------------------------------------------------------
JDK1_1_1 = /home/jyl/jdk1.1.1
minimal:
javac EmbeddedFrame.java
cc -c -I$(JDK1_1_1)/include -I$(JDK1_1_1)/include/solaris -I$(JDK1_1_1)/include/green_threads/include minimal.c
cc -o minimal minimal.o -L$(JDK1_1_1)/lib/sparc/green_threads -ljava
clean:
rm -f *.a *.o *.so core errs *~ \#* TAGS *.E a.out errors
the stack.trace attachment):
Script started on Fri Apr 25 10:09:02 1997
<noam:/home/jyl/ws/java> minimal
usage: minimal windowID width heigth
<noam:/home/jyl/ws/java> minimal 1 2 3
got minimal 1 2 3
going to call constructor, get ready for crash...
SIGSEGV 11* segmentation violation
si_signo [11]: SIGSEGV 11* segmentation violation
si_errno [0]: Error 0
si_code [1]: SEGV_ACCERR [addr: 0x84]
stackbase=EFFFF908, stackpointer=EFFFF6B0
Full thread dump:
"Finalizer thread" (TID:0xee700220, sys_thread_t:0xee3f1de0, state:R) prio=1
"Async Garbage Collector" (TID:0xee7001d8, sys_thread_t:0xef441de0, state:R) prio=1
"Idle thread" (TID:0xee700190, sys_thread_t:0xef471de0, state:R) prio=0
"Clock" (TID:0xee7000d0, sys_thread_t:0xef531de0, state:CW) prio=12
"main" (TID:0xee7000a8, sys_thread_t:0x41290, state:R) prio=5 *current thread*
sun.awt.motif.MComponentPeer.<init>(MComponentPeer.java:98)
sun.awt.motif.MCanvasPeer.<init>(MCanvasPeer.java:39)
sun.awt.motif.MPanelPeer.<init>(MPanelPeer.java:33)
sun.awt.motif.MFramePeer.<init>(MFramePeer.java:47)
sun.awt.motif.MEmbeddedFramePeer.<init>(MEmbeddedFramePeer.java:29)
sun.awt.motif.MEmbeddedFrame.<init>(MEmbeddedFrame.java:32)
EmbeddedFrame.<init>(EmbeddedFrame.java:6)
Monitor Cache Dump:
<unknown key> (0x0): owner "main" (0x41290, 1 entry)
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"
Sbrk lock: <unowned>
Monitor cache expansion lock: <unowned>
Monitor registry: owner "main" (0x41290, 1 entry)
Thread Alarm Q:
Abort
<noam:/home/jyl/ws/java> exit
<noam:/home/jyl/ws/java>
script done on Fri Apr 25 10:09:12 1997
---- minimal.c -----------------------------------------------------------------
#include <jni.h>
int
main(argc, argv)
int argc;
char **argv;
{
int w, h, i;
JNIEnv *env;
JavaVM *jvm;
JDK1_1InitArgs vm_args;
jint res;
jclass cls;
jmethodID mid;
jobject obj;
/*
* Check that sufficient args and the right kinds are supplied:
*/
if (argc != 4) {
fprintf(stderr, "usage: %s windowID width heigth\n", argv[0]);
exit(1);
}
i = atoi(argv[1]);
w = atoi(argv[2]);
h = atoi(argv[3]);
fprintf(stderr, "got %s %d %d %d\n", argv[0], i, w, h);
/*
* Get default args for the JVM and create JVM.
*/
JNI_GetDefaultJavaVMInitArgs(&vm_args);
res = JNI_CreateJavaVM(&jvm,&env,&vm_args);
if (res < 0) {
fprintf(stderr, "Can't create Java VM\n");
exit(1);
}
/*
* Find *my* EmbeddedFrame, defined in EmbeddedFrame.java.
*/
cls = (*env)->FindClass(env, "EmbeddedFrame");
if (cls == 0) {
fprintf(stderr, "Can't find class EmbeddedFrame\n");
exit(1);
}
/*
* Get the method ID for the constructor.
*/
mid = (*env)->GetMethodID(env, cls, "<init>", "(III)V");
if (mid == NULL) {
fprintf(stderr, "Can't find constructor for EmbeddedFrame\n");
exit(1);
}
/*
* Call the constructor.
*/
fprintf(stderr, "going to call constructor, get ready for crash...\n");
obj = (*env)->NewObject(env, cls, mid, i, w, h);
if (obj == 0) {
fprintf(stderr, "Can't construct new EmbeddedFrame\n");
exit(1);
}
}
----- EmbeddedFrame.java -----------------------------------------------------
import java.awt.*;
import sun.awt.*;
public class EmbeddedFrame extends sun.awt.motif.MEmbeddedFrame {
public EmbeddedFrame(int winID, int width, int height) {
super(winID);
// Set the window size and show everything:
this.setSize(width,height);
this.show();
}
}
----- Makefile --------------------------------------------------------------
JDK1_1_1 = /home/jyl/jdk1.1.1
minimal:
javac EmbeddedFrame.java
cc -c -I$(JDK1_1_1)/include -I$(JDK1_1_1)/include/solaris -I$(JDK1_1_1)/include/green_threads/include minimal.c
cc -o minimal minimal.o -L$(JDK1_1_1)/lib/sparc/green_threads -ljava
clean:
rm -f *.a *.o *.so core errs *~ \#* TAGS *.E a.out errors