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:

  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;
#ifdef _EM64T_
    args.add(EncoderBase::Operand(OpndSize_64, (::int_ptr)op1));
    args.add(EncoderBase::Operand(OpndSize_32, (::int_ptr)op1));
    ip(EncoderBase::encode(ip(), Mnemonic_MOV, args));

"int_ptr" is a signed type and in Operand() constructor the type of second parameter is "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
> 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
> 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.

View raw message