harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Petrenko" <alexey.a.petre...@gmail.com>
Subject Re: [drlvm][em64t] drlvm broken on em64t?
Date Tue, 12 Dec 2006 22:25:06 GMT
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 <gshimansky@gmail.com>:
> 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 <alexey.a.petrenko@gmail.com>:
> >> 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. <geir@pobox.com>:
> >> >
> >> >
> >> > 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
>
>

Mime
View raw message