You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Egor Pasko (JIRA)" <ji...@apache.org> on 2006/10/26 09:04:17 UTC

[jira] Created: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

[drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
---------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-1969
                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
         Environment: any
            Reporter: Egor Pasko
         Attachments: DoubleSync.java

this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)

of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.

To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.

run DoubleSync (attached) with -Xem:opt

java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
SIGABRT in VM code.
Stack trace:
        1: ?? (??:-1)
        2: abort (??:-1)
        3: __assert_fail (??:-1)
        4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
        5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
        6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
        7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
        8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
        9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
        10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
<snip>

dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Geir Magnusson Jr (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12447276 ] 
            
Geir Magnusson Jr commented on HARMONY-1969:
--------------------------------------------

I've tried to get this bug to exhibit itself to no avail.

On Ubuntu 6 , gcc 3.4.6, I cannot get a debug build to break w/ -Xem:opt.  I didn't comment out the asserts, but had a clean run w/ them uncommented

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Alexei Fedotov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12447314 ] 
            
Alexei Fedotov commented on HARMONY-1969:
-----------------------------------------

Mikhail, thanks for a good comment. I was trying to unedrstnand how to get a debug version of jitrino. Shoulf I just change release to debug in the following line of build.bat or build.sh file?

drlvm/trunk/build/build.bat:
REM  Note: vm.jitrino is always complied in release mode, otherwise it makes VM debug too slow
CALL "%ANT_COMMAND%" -f make/build.xml -Dvm.jitrino.cfg=release %*


> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Alexey Varlamov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12449310 ] 
            
Alexey Varlamov commented on HARMONY-1969:
------------------------------------------

Egor,
I applied the patch to fix HARMONY-1808. How should we resolve this JIRA, taking into account you statement about more general problem [1] - would you create new issue?
[1] http://issues.apache.org/jira/browse/HARMONY-1969#action_12445527

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Assigned To: Alexey Varlamov
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

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

Egor Pasko updated HARMONY-1969:
--------------------------------

    Patch Info: [Patch Available]

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Egor Pasko (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12449410 ] 
            
Egor Pasko commented on HARMONY-1969:
-------------------------------------

Alexey,
nested synchronized blocks are fixed. So, this bug is to be closed. I planned to add a loop nesting check assertion to HARMONY-1908. Now since HARMONY-1908 is closed, I am going to create a special JIRA for the loop nesting check. This is going to be a low priority bug.

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Assigned To: Alexey Varlamov
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

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

Egor Pasko updated HARMONY-1969:
--------------------------------

    Attachment: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt

0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt fixes the problem. But the general problem with unnested loops still persists (broken loop structure makes IA-32 CG (and statprof?) crash in several places). Need to write a detector of such situations, first of all, to be able to move them to JET.

c-unit, smoke, kernel, SUSE9

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

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

Egor Pasko updated HARMONY-1969:
--------------------------------

    Attachment: DoubleSync.java

DoubleSync.java attached

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Alexei Fedotov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12449506 ] 
            
Alexei Fedotov commented on HARMONY-1969:
-----------------------------------------

I believe Alexey meant HARMONY-1908.

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Assigned To: Alexey Varlamov
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Assigned: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

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

Alexey Varlamov reassigned HARMONY-1969:
----------------------------------------

    Assignee: Alexey Varlamov

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Assigned To: Alexey Varlamov
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Alexei Fedotov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12447326 ] 
            
Alexei Fedotov commented on HARMONY-1969:
-----------------------------------------

In addition to the change of build.sh file I disabled fatal warnings on Linux. Then I was able to reproduce an asserion.

Index: drlvm/trunk/build/make/components/vm/jitrino.xml
===================================================================
--- drlvm/trunk/build/make/components/vm/jitrino.xml    (revision 470383)
+++ drlvm/trunk/build/make/components/vm/jitrino.xml    (working copy)
@@ -234,7 +234,7 @@
                 <select cxx="gcc">
                     <compilerarg value="-fmessage-length=0" />
                     <compilerarg value="-Wall" />
-                    <compilerarg value="-Werror" />
+<!--                    <compilerarg value="-Werror" />-->
                 </select>

                 <compilerarg value="-x" />

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Closed: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

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

Alexey Varlamov closed HARMONY-1969.
------------------------------------

    Resolution: Fixed

Yep, I meant 1908, thanks. Closing as requested.

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Assigned To: Alexey Varlamov
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Egor Pasko (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12444831 ] 
            
Egor Pasko commented on HARMONY-1969:
-------------------------------------

The above stack trace was taken with profiling asserts uncommented (by mistake). Here is the correct one:
        1: ?? (??:-1)
        2: abort (??:-1)
        3: __assert_fail (??:-1)
        4: Jitrino::Ia32::IRManager::calculateLivenessInfo() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp:1540)
        5: Jitrino::Ia32::IRManager::updateLivenessInfo() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.h:300)
        6: Jitrino::Ia32::SessionAction::debugOutput(char const*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp:2195)
        7: Jitrino::Ia32::SessionAction::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/codegenerator/ia32/Ia32IRManager.cpp:2149)
        8: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
        9: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
<snip>

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Alexei Fedotov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12447327 ] 
            
Alexei Fedotov commented on HARMONY-1969:
-----------------------------------------

With patch applied the test passes smoothly.

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Alexei Fedotov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12445644 ] 
            
Alexei Fedotov commented on HARMONY-1969:
-----------------------------------------

This bug prevents Jitrino.OPT from running class library tests.
See http://wiki.apache.org/harmony/Unit_Tests_Pass_on_DRLVM

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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] Commented: (HARMONY-1969) [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop

Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/HARMONY-1969?page=comments#action_12447290 ] 
            
Mikhail Fursov commented on HARMONY-1969:
-----------------------------------------

Geir, are you sure that libjitrino.so you tested was built in debug mode? When you build DRLVM in debug mode, jitrino builds in release.
?

> [drlvm][jit] nested synchronized blocks make Jitrino.OPT crash meeting multiple loop entrances to a single loop
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1969
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1969
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: any
>            Reporter: Egor Pasko
>         Attachments: 0001-more-monexit-patterns-transformed-to-correct-loop-structure.txt, DoubleSync.java
>
>
> this is a sub-bug for HARMONY-1908. The reason is $subj. I suggest to restore a normal loop structure in this case (i. e. generalize the eliminateUnnestedLoopsOnDispatch() a little)
> of course, loop nesting may be broken in specially crafted bytecode samples (and we will not repair them with the proposed solution), but a reasonable behavoiur in this case would be to move bytecodes like this to JET. Here I am not for moving to JET because of the common nature of the code pattern (nested synches, javac) that we need to run heavily optimized.
> To reproduce, disable profiling-related asserts in ControlFlowGraph.cpp, rebuild Jitrino in debug mode.
> run DoubleSync (attached) with -Xem:opt
> java: /export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:384: bool Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool): Assertion `doAssert?false:true' failed.
> SIGABRT in VM code.
> Stack trace:
>         1: ?? (??:-1)
>         2: abort (??:-1)
>         3: __assert_fail (??:-1)
>         4: Jitrino::ControlFlowGraph::isEdgeProfileConsistent(bool, bool, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:385)
>         5: Jitrino::ControlFlowGraph::smoothEdgeProfile() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/shared/ControlFlowGraph.cpp:947)
>         6: Jitrino::StaticProfiler::estimateGraph(Jitrino::IRManager&, double, bool) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:253)
>         7: Jitrino::StaticProfilerPass::_run(Jitrino::IRManager&) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/dynopt/StaticProfiler.cpp:293)
>         8: Jitrino::OptPass::run() (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/optimizer/optpass.cpp:61)
>         9: Jitrino::runPipeline(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:226)
>         10: Jitrino::compileMethod(Jitrino::CompilationContext*) (/export/users/evpasko/svn/3/trunk/working_vm/vm/jitrino/src/main/Jitrino.cpp:261)
> <snip>
> dumping dot files helps significantly

-- 
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