You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Irina Arkhipets (JIRA)" <ji...@apache.org> on 2006/10/12 12:22:35 UTC

[jira] Created: (HARMONY-1841) [drlvm][jit] Jitrino OPT crashes when returnAddress is on the top of the stack before astore or astore_ instruction

[drlvm][jit] Jitrino OPT crashes when returnAddress is on the top of the stack before astore or astore_<n> instruction
----------------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-1841
                 URL: http://issues.apache.org/jira/browse/HARMONY-1841
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
         Environment: Linux IA-32, Windows IA-32
            Reporter: Irina Arkhipets


J2SE VM Specification reads about astore_<n> instruction: 
... 
The <n> must be a valid index into the local variables of the current frame (§3.6). The objectref on the top of the operand stack must be of type returnAddress or of type reference. It is popped from the operand stack, and the value of the local variable at <n> is set to objectref. 
... 

However, Jitrino OPT crashes when the value on the top of the stack is returnAddress . 

The following test example crashes with Jitrino OPT both on Linux IA-32 and Windows IA-32. 
Stack trace shows that the problem is in the Jitrino code (more particularly, in FlowGraph - please, see sample output below). 

--------- test.j --------- 
.class public test 
.super java/lang/Object 

.method public <init>()V 
    aload_0 
    invokespecial java/lang/Object/<init>()V 
    return 
.end method 

.method public static main([Ljava/lang/String;)V 
    .limit stack 10 
    .limit locals 10 
    new test 
    dup 
    invokespecial test/<init>()V 
    invokevirtual test/tryme()V 
    return 
.end method 

.method public tryme()V 
    jsr L1 
    nop 
L1: 
    astore_0 

    return 
.end method 
----------------------------- 

This test passes with JRockit and interpreter. 
This test fails in JET mode with another error diagnostic - please, see HARMONY-1840 for more details.

Sample output is: 
... 
java: /export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:528: bool Jitrino::inlineJSR(Jitrino::IRManager*, Jitrino::Node*, Jitrino::DefUseBuilder&, Jitrino::JsrEntryInstToRetInstMap&): Assertion `last->isJSR()' failed.
SIGABRT in VM code.
Stack trace:
        1: ?? (??:-1)
        2: abort (??:-1)
        3: __assert_fail (??:-1)
        4: inlineJSR (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:529)
        5: inlineJSRs (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:658)
        6: Jitrino::FlowGraph::doTranslatorCleanupPhase(Jitrino::IRManager&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:833)
        7: Jitrino::TranslatorSession::postTranslatorCleanup() (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/translator/TranslatorIntfc.cpp:77)
        8: Jitrino::TranslatorSession::run() (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/translator/TranslatorIntfc.cpp:45)
        9: Jitrino::Inliner::runTranslatorSession(Jitrino::CompilationContext&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/inliner.cpp:853)
        10: Jitrino::Inliner::getNextRegionToInline(Jitrino::CompilationContext&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/inliner.cpp:938)
        11: Jitrino::InlinePass::_run(Jitrino::IRManager&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/inliner.cpp:1126)
        12: Jitrino::OptPass::run() (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
        13: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
        14: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
        15: Jitrino::Jitrino::CompileMethod(Jitrino::CompilationContext*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:286)
        16: JIT_compile_method_with_params (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/vm/drl/DrlJITInterface.cpp:282)
        17: Dll_JIT::compile_method_with_params(void*, Method*, OpenMethodExecutionParams) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/include/dll_jit_intf.h:86)
        18: compile_do_compilation_jit(Method*, JIT*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/compile.cpp:700)
        19: vm_compile_method (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/class_support/C_Interface.cpp:2538)
        20: DrlEMImpl::compileMethod(Method*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/DrlEMImpl.cpp:520)
        21: CompileMethod (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/em_intf.cpp:49)
        22: compile_do_compilation (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/compile.cpp:780)
        23: compile_jit_a_method(Method*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/compile.cpp:828)
        24: IP is 0x410D0172 <native code>
        25: vm_invoke_native_array_stub (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/util/ia32/base/invoke_native_stub_ia32.asm:41)
        26: JIT_execute_method_default(void*, _jmethodID*, jvalue*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/util/ia32/base/ini_iA32.cpp:199)
        27: DrlEMImpl::executeMethod(_jmethodID*, jvalue*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/DrlEMImpl.cpp:489)
        28: ExecuteMethod (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/em_intf.cpp:43)
        29: vm_execute_java_method_array(_jmethodID*, jvalue*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/ini.cpp:58)
        30: call_static_method_no_ref_result (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1072)
        31: CallStaticVoidMethodA(JNIEnv_External*, _jobject*, _jmethodID*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1450)
        32: CallStaticVoidMethodV(JNIEnv_External*, _jobject*, _jmethodID*, char*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1437)
        33: CallStaticVoidMethod(JNIEnv_External*, _jobject*, _jmethodID*, ...) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1427)
        34: ?? (??:-1)
        35: ?? (??:-1)
        36: ?? (??:-1)
        37: ?? (??:-1)
        38: hysig_protect (??:-1)
        39: ?? (??:-1)
        40: __libc_start_main (??:-1)
        41: ?? (??:-1)
<end of stack trace>
Aborted
... 

Please, run the "java -jar jasmin.jar test.j" the to compile the test source file.

Please, run the "java -Xem:opt -Dvm.assert_dialog=false test" command to reproduce the failure.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] Updated: (HARMONY-1841) [drlvm][jit] Jitrino OPT crashes when returnAddress is on the top of the stack before astore or astore_ instruction

Posted by "Irina Arkhipets (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/HARMONY-1841?page=all ]

Irina Arkhipets updated HARMONY-1841:
-------------------------------------

    Attachment: test.j

Test source file

> [drlvm][jit] Jitrino OPT crashes when returnAddress is on the top of the stack before astore or astore_<n> instruction
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1841
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1841
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Linux IA-32, Windows IA-32
>            Reporter: Irina Arkhipets
>         Attachments: test.j
>
>
> J2SE VM Specification reads about astore_<n> instruction: 
> ... 
> The <n> must be a valid index into the local variables of the current frame (§3.6). The objectref on the top of the operand stack must be of type returnAddress or of type reference. It is popped from the operand stack, and the value of the local variable at <n> is set to objectref. 
> ... 
> However, Jitrino OPT crashes when the value on the top of the stack is returnAddress . 
> The following test example crashes with Jitrino OPT both on Linux IA-32 and Windows IA-32. 
> Stack trace shows that the problem is in the Jitrino code (more particularly, in FlowGraph - please, see sample output below). 
> --------- test.j --------- 
> .class public test 
> .super java/lang/Object 
> .method public <init>()V 
>     aload_0 
>     invokespecial java/lang/Object/<init>()V 
>     return 
> .end method 
> .method public static main([Ljava/lang/String;)V 
>     .limit stack 10 
>     .limit locals 10 
>     new test 
>     dup 
>     invokespecial test/<init>()V 
>     invokevirtual test/tryme()V 
>     return 
> .end method 
> .method public tryme()V 
>     jsr L1 
>     nop 
> L1: 
>     astore_0 
>     return 
> .end method 
> ----------------------------- 
> This test passes with JRockit and interpreter. 
> This test fails in JET mode with another error diagnostic - please, see HARMONY-1840 for more details.
> Sample output is: 
> ... 
> java: /export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:528: bool Jitrino::inlineJSR(Jitrino::IRManager*, Jitrino::Node*, Jitrino::DefUseBuilder&, Jitrino::JsrEntryInstToRetInstMap&): Assertion `last->isJSR()' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: inlineJSR (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:529)
>         5: inlineJSRs (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:658)
>         6: Jitrino::FlowGraph::doTranslatorCleanupPhase(Jitrino::IRManager&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/FlowGraph.cpp:833)
>         7: Jitrino::TranslatorSession::postTranslatorCleanup() (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/translator/TranslatorIntfc.cpp:77)
>         8: Jitrino::TranslatorSession::run() (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/translator/TranslatorIntfc.cpp:45)
>         9: Jitrino::Inliner::runTranslatorSession(Jitrino::CompilationContext&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/inliner.cpp:853)
>         10: Jitrino::Inliner::getNextRegionToInline(Jitrino::CompilationContext&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/inliner.cpp:938)
>         11: Jitrino::InlinePass::_run(Jitrino::IRManager&) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/inliner.cpp:1126)
>         12: Jitrino::OptPass::run() (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         13: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         14: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
>         15: Jitrino::Jitrino::CompileMethod(Jitrino::CompilationContext*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:286)
>         16: JIT_compile_method_with_params (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/jitrino/src/vm/drl/DrlJITInterface.cpp:282)
>         17: Dll_JIT::compile_method_with_params(void*, Method*, OpenMethodExecutionParams) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/include/dll_jit_intf.h:86)
>         18: compile_do_compilation_jit(Method*, JIT*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/compile.cpp:700)
>         19: vm_compile_method (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/class_support/C_Interface.cpp:2538)
>         20: DrlEMImpl::compileMethod(Method*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/DrlEMImpl.cpp:520)
>         21: CompileMethod (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/em_intf.cpp:49)
>         22: compile_do_compilation (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/compile.cpp:780)
>         23: compile_jit_a_method(Method*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/compile.cpp:828)
>         24: IP is 0x410D0172 <native code>
>         25: vm_invoke_native_array_stub (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/util/ia32/base/invoke_native_stub_ia32.asm:41)
>         26: JIT_execute_method_default(void*, _jmethodID*, jvalue*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/util/ia32/base/ini_iA32.cpp:199)
>         27: DrlEMImpl::executeMethod(_jmethodID*, jvalue*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/DrlEMImpl.cpp:489)
>         28: ExecuteMethod (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/em/src/em_intf.cpp:43)
>         29: vm_execute_java_method_array(_jmethodID*, jvalue*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jit/ini.cpp:58)
>         30: call_static_method_no_ref_result (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1072)
>         31: CallStaticVoidMethodA(JNIEnv_External*, _jobject*, _jmethodID*, jvalue*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1450)
>         32: CallStaticVoidMethodV(JNIEnv_External*, _jobject*, _jmethodID*, char*) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1437)
>         33: CallStaticVoidMethod(JNIEnv_External*, _jobject*, _jmethodID*, ...) (/export/users2/iarkhipe/20061012/trunk/working_vm/vm/vmcore/src/jni/jni_method.cpp:1427)
>         34: ?? (??:-1)
>         35: ?? (??:-1)
>         36: ?? (??:-1)
>         37: ?? (??:-1)
>         38: hysig_protect (??:-1)
>         39: ?? (??:-1)
>         40: __libc_start_main (??:-1)
>         41: ?? (??:-1)
> <end of stack trace>
> Aborted
> ... 
> Please, run the "java -jar jasmin.jar test.j" the to compile the test source file.
> Please, run the "java -Xem:opt -Dvm.assert_dialog=false test" command to reproduce the failure.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira