harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yu-Nan He (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-3558) [drlvm][gc] drlvm crashes with large pages enabled
Date Wed, 13 Jun 2007 01:43:26 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-3558?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12504086
] 

Yu-Nan He commented on HARMONY-3558:
------------------------------------

Hi,
  The exception is generated after encountering a wrong object address 0xffffffff8xxxxxxx
in my machine. This is a JIT bug and it's caused by type cast.

Below is a piece of the code generation log of JET:

---------------------------------
;;   2) GETFIELD        32 {org/apache/harmony/kernel/vm/InternMap::elementData [Lorg/apache/harmony/kernel/vm/InternMap$Entry;}
       
;;>check.npe for GR1 - skipped
         ; mov(i32) gr3, [GR1+8]
         ; movP gr2, 0000000080000000
         ; add gr3, gr2
          8B 53 08 48 B9 00 00  00 80 FF FF FF FF 48 01 CA
-----------------------------------

After code generation, it's expected that the value is 0x0000000080000000, but actually it's
0xffffffff80000000 in binary code.

The wrong function movp_impl() [jitrino/src/jet/enc_ia32.cpp]:

-----------------------
void Encoder::movp_impl(AR op0, const void *op1)
{
    EncoderBase::Operands args;
    args.add(devirt(op0));
#ifdef _EM64T_
    args.add(EncoderBase::Operand(OpndSize_64, (::int_ptr)op1));
#else
    args.add(EncoderBase::Operand(OpndSize_32, (::int_ptr)op1));
#endif
    ip(EncoderBase::encode(ip(), Mnemonic_MOV, args));
}
------------------------

"int_ptr" is a signed type and in Operand() constructor the type of second parameter is "long
long".

I modify the constructor and movp_impl() to an unsigned type. The bug disappears. (Both JET
and server)





> [drlvm][gc] drlvm crashes with large pages enabled 
> ---------------------------------------------------
>
>                 Key: HARMONY-3558
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3558
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: winx64
>            Reporter: Rustem Rafikov
>            Assignee: Xiao-Feng Li
>
> DRLVM 64bit build 20070330 crashes both with gcv4.1 and gcv5 if using large pages with
large enough heap size.
> Details:
> 1. GC4.1:
> VM crashes if heap size requested > ~900M and works otherwise. It crashes with:
> win64-20070330/bin/java.exe -Xms1024m -Xmx1024m -Xem:server -XX:gc.lp=true -Xverbose:gc.lp
-c
> p ./jbb.jar;./check.jar spec.jbb.JBBmain -propfile SPECjbb.props
> gc.lp: large pages are allocated
> java/lang/ExceptionInInitializerError : (null)
> HMYEXEL062E Internal VM error: Failed to create Java VM
> FAILED to invoke JVM.
> 2. GCv5:
> Due to a bug in gcv5 parsing parameters functtion yuo should specify -XX:gc.use_large_page=true
 -XX:gc.large_page=true 
> Command line:
> win64-20070330/bin/java.exe -Xem:server -XX:vm.dlls=gc_gen.dll -XX:gc.use_large_page=true
-XX:gc.large_page=true -X
> s1500m -Xmx1500m -cp ./jbb.jar;./check.jar spec.jbb.JBBmain -propfile SPECjbb.props.short
> it crashes with the message:
> java/lang/ExceptionInInitializerError : (null)
> HMYEXEL062E Internal VM error: Failed to create Java VM
> FAILED to invoke JVM.
> GC use large pages.
> So,  in the both cases there is the messages that large pages are allocated.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message