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:40:13 GMT
BTW, I got the strange message on DRLVM before and with the latest
Gregory's patch:
C:\Work\tests>uild\win_ia32_msvc_release\deploy\jdk\jre\bin\java.exe HelloWorld
Failed to import JNI NIO functions.
Hello, World

This does not reproducible on IBM VME.

SY, Alexey

2006/12/13, Alexey Petrenko <alexey.a.petrenko@gmail.com>:
> 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