From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1775 invoked by alias); 8 Oct 2002 12:26:04 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 1728 invoked by uid 71); 8 Oct 2002 12:26:02 -0000 Resent-Date: 8 Oct 2002 12:26:02 -0000 Resent-Message-ID: <20021008122602.1727.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, java-prs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, raz+tah.bet@raz.cx Received: (qmail 30761 invoked by uid 61); 8 Oct 2002 12:16:39 -0000 Message-Id: <20021008121639.30760.qmail@sources.redhat.com> Date: Tue, 08 Oct 2002 05:26:00 -0000 From: raz+tah.bet@raz.cx Reply-To: raz+tah.bet@raz.cx To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: libgcj/8169: Segfault in java::lang::System::init_properties() X-SW-Source: 2002-10/txt/msg00282.txt.bz2 List-Id: >Number: 8169 >Category: libgcj >Synopsis: Segfault in java::lang::System::init_properties() >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue Oct 08 05:26:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Roland Turner >Release: gcc version 2.95.4 20011002 (Debian prerelease) >Organization: >Environment: Debian Woody, Linux-2.4.18 on i386 >Description: During JVM creation, a segfault is generated. The stacktrace from gdb is below. I'm not clear on where this bug lies, however the stack trace suggests a circular dependency in libgcj, so that's where I'm filing it. (That said, the library does work in other circumstances, so the circular dependency is not enough by itself.) (gdb) run Starting program: /home/raz/invoke [New Thread 1024 (LWP 25789)] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1024 (LWP 25789)] 0x4015cfa6 in java::lang::System::init_properties() () from /usr/lib/libgcj.so.2 (gdb) bt #0 0x4015cfa6 in java::lang::System::init_properties() () from /usr/lib/libgcj.so.2 #1 0x4016f9fd in java::lang::System::getProperty(java::lang::String*) () from /usr/lib/libgcj.so.2 #2 0x401ae35d in java::util::TimeZone::__U3c_clinit__U3e_() () from /usr/lib/libgcj.so.2 #3 0x4015654c in java::lang::Class::initializeClass() () from /usr/lib/libgcj.so.2 #4 0x4015795d in _Jv_InitClass () from /usr/lib/libgcj.so.2 #5 0x401ae87c in java::util::TimeZone::getTimeZone(java::lang::String*) () from /usr/lib/libgcj.so.2 #6 0x4016f5e1 in java::lang::System::getDefaultTimeZoneId() () from /usr/lib/libgcj.so.2 #7 0x4015cf60 in java::lang::System::init_properties() () from /usr/lib/libgcj.so.2 #8 0x4016f9fd in java::lang::System::getProperty(java::lang::String*) () from /usr/lib/libgcj.so.2 #9 0x40187e4f in java::io::PrintStream::__U3c_clinit__U3e_() () from /usr/lib/libgcj.so.2 #10 0x4015654c in java::lang::Class::initializeClass() () from /usr/lib/libgcj.so.2 #11 0x4013eed5 in _Jv_AllocObject () from /usr/lib/libgcj.so.2 #12 0x4016fe0b in java::lang::System::__U3c_clinit__U3e_() () from /usr/lib/libgcj.so.2 #13 0x4015654c in java::lang::Class::initializeClass() () from /usr/lib/libgcj.so.2 #14 0x4015795d in _Jv_InitClass () from /usr/lib/libgcj.so.2 #15 0x4016fa97 in java::lang::System::getSecurityManager() () from /usr/lib/libgcj.so.2 #16 0x40171d42 in java::lang::ThreadGroup::checkAccess() () from /usr/lib/libgcj.so.2 #17 0x4016ff87 in java::lang::Thread::Thread(java::lang::ThreadGroup*, java::lang::Runnable*, java::lang::String*) () from /usr/lib/libgcj.so.2 #18 0x401b72fe in gnu::gcj::jni::NativeThread::NativeThread(java::lang::ThreadGroup*, java::lang::String*) () from /usr/lib/libgcj.so.2 #19 0x40141d35 in _Jv_JNIMethod::call(ffi_cif*, void*, ffi_raw*, void*) () from /usr/lib/libgcj.so.2 #20 0x40141d82 in _Jv_JNIMethod::call(ffi_cif*, void*, ffi_raw*, void*) () from /usr/lib/libgcj.so.2 #21 0x4014202d in JNI_CreateJavaVM () from /usr/lib/libgcj.so.2 #22 0x08048671 in main () at invoke.c:26 (gdb) >How-To-Repeat: Source below adapted from: http://java.sun.com/docs/books/tutorial/native1.1/invoking/example-1dot1/invoke.c and: file:///usr/share/doc/j2sdk1.3/docs/guide/jni/jni-12.html#JNI_CreateJavaVM compiled with: gcc -v -save-temps -o invoke -lgcj -lm -lgcjgc -lpthread -lz -ldl invoke.c output was: Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.4/specs gcc version 2.95.4 20011002 (Debian prerelease) /usr/lib/gcc-lib/i386-linux/2.95.4/cpp0 -lang-c -v -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ invoke.c invoke.i GNU CPP version 2.95.4 20011002 (Debian prerelease) (i386 Linux/ELF) #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/lib/gcc-lib/i386-linux/2.95.4/include /usr/include End of search list. The following default directories have been omitted from the search path: /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3 /usr/lib/gcc-lib/i386-linux/2.95.4/../../../../i386-linux/include End of omitted list. /usr/lib/gcc-lib/i386-linux/2.95.4/cc1 invoke.i -quiet -dumpbase invoke.c -version -o invoke.s GNU C version 2.95.4 20011002 (Debian prerelease) (i386-linux) compiled by GNU C version 2.95.4 20011002 (Debian prerelease). as -V -Qy -o invoke.o invoke.s GNU assembler version 2.12.90.0.1 (i386-linux) using BFD version 2.12.90.0.1 20020307 Debian/GNU Linux /usr/lib/gcc-lib/i386-linux/2.95.4/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o invoke /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i386-linux/2.95.4/crtbegin.o -L/usr/lib/gcc-lib/i386-linux/2.95.4 -lgcj -lm -lgcjgc -lpthread -lz -ldl invoke.o -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-linux/2.95.4/crtend.o /usr/lib/crtn.o #include #include int main() { JNIEnv *env; JavaVM *jvm; JavaVMInitArgs vm_args; JavaVMOption options[4]; /* JDK1_1InitArgs vm_args; */ jint res; jclass cls; jmethodID mid; jstring jstr; jobjectArray args; /* char classpath[1024]; */ options[0].optionString = "-Djava.compiler=NONE"; options[1].optionString = "-Djava.class.path=."; options[2].optionString = "-Djava.library.path=."; options[3].optionString = "-verbose:jni"; vm_args.version = JNI_VERSION_1_2; vm_args.options = options; vm_args.nOptions = 4; vm_args.ignoreUnrecognized = JNI_TRUE; res = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args); /* vm_args.version = 0x00010001; JNI_GetDefaultJavaVMInitArgs(&vm_args); sprintf(classpath, "%s/.", vm_args.classpath); vm_args.classpath = classpath; res = JNI_CreateJavaVM(&jvm,&env,&vm_args); */ if (res < 0) { fprintf(stderr, "Can't create Java VM\n"); exit(1); } cls = (*env)->FindClass(env, "Prog"); if (cls == 0) { fprintf(stderr, "Can't find Prog class\n"); exit(1); } mid = (*env)->GetStaticMethodID(env, cls, "main", "([Ljava/lang/String;)V"); if (mid == 0) { fprintf(stderr, "Can't find Prog.main\n"); exit(1); } jstr = (*env)->NewStringUTF(env, " from C!"); if (jstr == 0) { fprintf(stderr, "Out of memory\n"); exit(1); } args = (*env)->NewObjectArray ( env, 1, (*env)->FindClass(env, "java/lang/String"), jstr ); if (args == 0) { fprintf(stderr, "Out of memory\n"); exit(1); } (*env)->CallStaticVoidMethod(env, cls, mid, args); (*jvm)->DestroyJavaVM(jvm); return 0; } >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="invoke.i.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="invoke.i.bz2" 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