[Sablevm-developer] IA64 saga continues...
Brought to you by:
egagnon
From: Grzegorz B. P. <ga...@de...> - 2003-02-18 16:21:27
|
Hi! I am trying to get SableVM working on UP IA64 machine with inlined threading engine. Here's what I have now. I tried http://www-sor.inria.fr/~piumarta/pldi98/vm.c and it worked well w/o any assembly. The ouput was almost the same as on my i386. I ran it a few times, but nothing bad happened, so it didn't seem too helpful. I rebuilded sablevm and sablevm-native packages with these options: --enable-signals-for-exceptions=no --with-threading=inlined --enable-debugging-features Running it normally simply throwns "Segmentation fault", then I had: gadek@itanic:~$ /usr/bin/sablevm -Y -v -p sablevm.verbose.methods=true -p sablevm.verbose.instructions=true --classpath=./HelloWorld.jar: HelloWorld [verbose jni: JNI_CreateJavaVM] [verbose gc: allocating initial heap (16777216 bytes)] [verbose class: loading "java/lang/Object"] [verbose class: loading "java/io/Serializable"] [verbose class: loading "java/lang/Cloneable"] [verbose class: creating "[B"] [verbose class: loading "java/lang/Class"] [verbose methods: entering method java/lang/Class.<init>([B)V] [verbose instructions: executing @0x6000000000010f70 PREPARE_METHOD] Segmentation fault Tried GDB and my session looked like this: gadek@itanic:~$ gdb /usr/bin/sablevm (gdb) set args -Y -v -p sablevm.verbose.methods=true -p sablevm.verbose.instructions=true --classpath=./HelloWorld.jar: HelloWorld (gdb) run Starting program: /usr/bin/sablevm -Y -v -p sablevm.verbose.methods=true -p sablevm.verbose.instructions=true --classpath=./HelloWorld.jar: HelloWorld [New Thread 1024 (LWP 1197)] [verbose jni: JNI_CreateJavaVM] [verbose gc: allocating initial heap (16777216 bytes)] [verbose class: loading "java/lang/Object"] [verbose class: loading "java/io/Serializable"] [verbose class: loading "java/lang/Cloneable"] [verbose class: creating "[B"] [verbose class: loading "java/lang/Class"] [verbose methods: entering method java/lang/Class.<init>([B)V] [verbose instructions: executing @0x6000000000010f70 PREPARE_METHOD] Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1024 (LWP 1197)] 0x6000000000022a70 in ?? () (gdb) bt #0 0x6000000000022a70 in ?? () #1 0x2000000000263070 in _svmf_interpreter (_env=0x600000000000d3e0) at instructions_preparation_inlined_threaded.c:17527 #2 0x20000000000a4760 in _svmf_new_class (env=0x3d73646f6874656d, type=0x65757274) at util2.c:820 The 820th line is this: if (_svmm_invoke_nonvirtual_jlclass_init (env, class_instance, _svmf_cast_jobject (data)) != JNI_OK) { The interesting thing is that it behaves exactly the same no matter if in _svmf_iflush there IS this line: __asm__ __volatile__ ("fc %0;; sync.i;; srlz.i;;" :: "r"(pword)); or it's commented out ! So either this flushing doesn't work OR we have another problem. For example running with --debugging-features enabled gives tons of warnings! I am attaching gzipped log. Maybe there's sth unusual in it that causes the problems? I'd like to hear any suggestions. Grzegorz B. Prokopski PS: In the meantime I am gonna look for instructions that flush entire data and code caches (if there are such instructions for IA64). -- Grzegorz B. Prokopski <ga...@de...> Debian http://www.debian.org/ |