Alexey Petrenko wrote:
> And here is the failure after update:
Yes, that's what I meant about bootstrap class loader failing to initialize.
> [junit] Running org.apache.harmony.lang.generics.ClassLoaderTest
> [junit] SIGSEGV in VM code.
> [junit] Stack trace:
> [junit] 1: strcat (??:-1)
> [junit] 2: bootstrap_initial_java_classes
>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/init/vm_init.cpp:292)
>
> [junit] 3: preload_classes
>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/init/vm_init.cpp:334)
>
> [junit] 4: vm_init1(JavaVM_Internal*, JavaVMInitArgs*)
>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/init/vm_init.cpp:691)
>
> [junit] 5: JNI_CreateJavaVM
> (/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/jni/jni.cpp:495)
>
> [junit] 6: ?? (??:-1)
> [junit] 7: ?? (??:-1)
> [junit] 8: ?? (??:-1)
> [junit] 9: hysig_protect
>
(/nfs/pb/home/aapetren/work/harmony/working_classlib/modules/portlib/src/main/native/port/unix/hysignal.c:283)
>
> [junit] 10: ?? (??:-1)
> [junit] 11: __libc_start_main (??:-1)
> [junit] 12: ?? (??:-1)
> [junit] <end of stack trace>
I've created a patch to classlib which fixes the problem with drlvm. Now
if you could test it with IBM VME, I'll commit it:
Index: modules/luni/src/main/native/luni/shared/luniglob.c
===================================================================
--- modules/luni/src/main/native/luni/shared/luniglob.c (revision 486296)
+++ modules/luni/src/main/native/luni/shared/luniglob.c (working copy)
@@ -263,24 +263,20 @@
returnCode = properties_load(PORTLIB, propsFile, &props, &number);
- bootstrapClassPath = "";
-
if (JNI_OK == returnCode && number != 0)
{
unsigned i = 0;
/* Make a string version of the CP separator */
char cpSeparator[] = {(char)hysysinfo_get_classpathSeparator
(), '\0'};
- /* Read current value of bootclasspath property */
+ /* Read current value of bootclasspath property */
rcGetProperty = (*vmInterface)->GetSystemProperty (vmInterface,
BOOTCLASSPATH_PROPERTY,
&bootstrapClassPath);
+ // Gregory - no property is found, VM bootclasspath is not defined
if (VMI_ERROR_NONE != rcGetProperty)
- {
- returnCode = JNI_ERR;
- goto cleanup;
- }
+ bootstrapClassPath = NULL;
qsort(props, number, sizeof(key_value_pair), props_compare);
>
> 2006/12/13, Alexey Petrenko <[EMAIL PROTECTED]>:
>> I got the following errors while runnig kernel and other vm tests on
>> Suse/x86:
>> [junit] Running org.apache.harmony.lang.generics.ClassLoaderTest
>> [junit] SIGSEGV in VM code.
>> [junit] Stack trace:
>> [junit] 1: strlen (??:-1)
>> [junit] 2: GetSystemProperty
>> (/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmi/src/vmi.cpp:150)
>> [junit] 3: readClassPathFromPropertiesFile
>> (../shared/luniglob.c:275)
>> [junit] 4: JNI_OnLoad (../shared/luniglob.c:126)
>> [junit] 5: find_call_JNI_OnLoad
>>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/util/natives_support.cpp:119)
>>
>> [junit] 6: natives_load_library(char const*, bool*, int*)
>>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/util/natives_support.cpp:287)
>>
>> [junit] 7: ClassLoader::LoadNativeLibrary(char const*)
>>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/class_support/classloader.cpp:1046)
>>
>> [junit] 8: BootstrapClassLoader::Initialize(ManagedObject*)
>>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/class_support/classloader.cpp:1369)
>>
>> [junit] 9: bootstrap_initial_java_classes
>>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/init/vm_init.cpp:292)
>>
>> [junit] 10: preload_classes
>>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/init/vm_init.cpp:334)
>>
>> [junit] 11: vm_init1(JavaVM_Internal*, JavaVMInitArgs*)
>>
(/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/init/vm_init.cpp:691)
>>
>> [junit] 12: JNI_CreateJavaVM
>> (/nfs/pb/home/aapetren/work/harmony/working_vm/vm/vmcore/src/jni/jni.cpp:495)
>>
>> [junit] 13: ?? (??:-1)
>> [junit] 14: ?? (??:-1)
>> [junit] 15: ?? (??:-1)
>> [junit] 16: hysig_protect
>>
(/nfs/pb/home/aapetren/work/harmony/working_classlib/modules/portlib/src/main/native/port/unix/hysignal.c:283)
>>
>> [junit] 17: ?? (??:-1)
>> [junit] 18: __libc_start_main (??:-1)
>> [junit] 19: ?? (??:-1)
>> [junit] <end of stack trace>
>> [junit] Tests FAILED
>>
>> And something like this on windows...
>>
>> SY, Alexey
>>
>> P.S. I do not have latest Gregory's patch yet.
>>
>> 2006/12/13, Geir Magnusson Jr. <[EMAIL PROTECTED]>:
>> >
>> >
>> > Gregory Shimansky wrote:
>> > > Geir Magnusson Jr. wrote:
>> > >> This must be from the recent properties refactoring...
>> > >
>> > > I've found out the reason of the change. It is r486100 in classlib.
>> > > Previously there was no call to GetSystemProperty about
>> > > org.apache.harmony.boot.class.path. I've fixed drlvm function
>> > > GetSystemProperty to return VMI_ERROR_NOT_FOUND in case a property
>> > > cannot be found and set valuePtr to NULL (or otherwise luniglob
>> crashes).
>> > >
>> > > This still doesn't work because org.apache.harmony.boot.class.path is
>> > > not set anywhere, and then bootstrap class loader fails to
>> initialize.
>> > > I'm still trying to find out what else had changed.
>> > >
>> >
>> > That property is constructed by luni when the .so is loaded. If this
>> > doesn't work on em64t, it shouldn't work anywhere...
>> >
>> > geir
>> >
>> >
>> > >> Gregory Shimansky wrote:
>> > >>> Geir Magnusson Jr. wrote:
>> > >>>> No one?
>> > >>>
>> > >>> I think I've reproduced the same problem on ia32 fedora (on other
>> > >>> linuxes everything works ok). I'm trying to investigate. The
>> problem
>> > >>> is in function GetSystemProperty in vm/vmi/src/vmi.cpp
>> > >>>
>> > >>> 146 vmiError JNICALL
>> > >>> 147 GetSystemProperty(VMInterface *vmi, char *key, char
>> **valuePtr)
>> > >>> 148 {
>> > >>> 149 char* value = get_property(key, JAVA_PROPERTIES);
>> > >>> 150 *valuePtr = strdup(value);
>> > >>> 151 destroy_property_value(value);
>> > >>> 152 return VMI_ERROR_NONE;
>> > >>> 153 }
>> > >>>
>> > >>> called like this:
>> > >>>
>> > >>> GetSystemProperty (vmi=0x97ca60, key=0x941e5c
>> > >>> "org.apache.harmony.boot.class.path", valuePtr=0xbf98cd18)
>> > >>>
>> > >>> The function get_property returns NULL, so strdup in line 150
>> > >>> crashes. I don't know yet why
>> > >>> get_property("org.apache.harmony.boot.class.path", JAVA_PROPERTIES)
>> > >>> returns NULL, but calling strdup unconditionally doesn't seem to
>> be a
>> > >>> good idea to me too.
>> > >>>
>> > >>>> Geir Magnusson Jr. wrote:
>> > >>>>> Trying to get the snapshots out... :)
>> > >>>>>
>> > >>>>> I was trying r486163 and drlvm just crashes...
>> > >>>>>
>> > >>>>> Anyone else seeing this? I'm on ubuntu 6 x86_64. I don't
>> want to
>> > >>>>> blame luni, but w/ strace, I see the following :
>> > >>>>>
>> > >>>>>
>>
open("/home/geir/dev/apache/harmony/enhanced/trunk/working_vm/build/deploy/jdk/jre/bin/libhyluni.so",
>>
>> > >>>>> O_RDONLY) = 3
>> > >>>>> read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0
>> > >>>>> i\0\0\0"..., 640) = 640
>> > >>>>> fstat(3, {st_mode=S_IFREG|0755, st_size=1238859, ...}) = 0
>> > >>>>> mmap(NULL, 1263224, PROT_READ|PROT_EXEC,
>> MAP_PRIVATE|MAP_DENYWRITE,
>> > >>>>> 3, 0) = 0x2aaabf6e8000
>> > >>>>> mprotect(0x2aaabf71d000, 1046136, PROT_NONE) = 0
>> > >>>>> mmap(0x2aaabf81c000, 4096, PROT_READ|PROT_WRITE,
>> > >>>>> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x34000) = 0x2aaabf81c000
>> > >>>>> close(3) = 0
>> > >>>>> rt_sigaction(SIGPIPE, NULL, {SIG_DFL}, 8) = 0
>> > >>>>> rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
>> > >>>>>
>>
stat("/home/geir/dev/apache/harmony/enhanced/trunk/working_vm/build/deploy/jdk/jre/lib/boot/bootclasspath.properties",
>>
>> > >>>>> {st_mode=S_IFREG|0644, st_size=6360, ...}) = 0
>> > >>>>>
>>
open("/home/geir/dev/apache/harmony/enhanced/trunk/working_vm/build/deploy/jdk/jre/lib/boot/bootclasspath.properties",
>>
>> > >>>>> O_RDONLY) = 3
>> > >>>>> fstat(3, {st_mode=S_IFREG|0644, st_size=6360, ...}) = 0
>> > >>>>> mmap(NULL, 6360, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) =
>> > >>>>> 0x2aaabf81d000
>> > >>>>> close(3) = 0
>> > >>>>> munmap(0x2aaabf81d000, 6360) = 0
>> > >>>>> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
>> > >>>>> rt_sigaction(SIGSEGV, {SIG_DFL}, {0x2aaaac098530, [],
>> > >>>>> SA_RESTORER|SA_STACK|SA_SIGINFO, 0x2aaaab8554d0}, 8) = 0
>> > >>>>> rt_sigreturn(0) = 0
>> > >>>>> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
>> > >>>>> +++ killed by SIGSEGV +++
>> > >>>>>
>> > >>>>>
>> > >>>>>
>> > >>>>> geir
>> > >>>>
>> > >>>
>> > >>>
>> > >>
>> > >
>> > >
>> >
>>
>
--
Gregory