Gregory,

I've checked your patch on Windows with IBM VME and all unit tests are passed.
Now I'm running unit tests on Linux... The run is not finished yet.
But there is no crashes :)

SY, Alexey

2006/12/13, Gregory Shimansky <[EMAIL PROTECTED]>:
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


Reply via email to