You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Mikhail Fursov (JIRA)" <ji...@apache.org> on 2007/07/31 12:18:53 UTC

[jira] Commented: (HARMONY-4568) [drlvm][lnx64][jit] SIGSEGV in VM code after appying H4514

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

Mikhail Fursov commented on HARMONY-4568:
-----------------------------------------

This issue revealed very old and IMO very important problem of Jitrino compiler: native SOE in recursion based algorithms.
In this example Jitrino.OPT failed in bc-map&inline-info registration algorithm with recursion ~400. So if we have more then 300-400 nodes in IR there is a chance of crash.

There are 2 solutions here
1) Do not use recursion in algorithms at all. It requires a lot of work and will make worse code readability.
2) Create some compiler-global threshold constant, and check it from optimizations (like inliner) that increase IR size. Do not optimize if this threshold is exceed.

I propose creating new JIRA related to recursion based algorithms and close this one after patch is committed.
The patch attached solves the problem in the following way: it slits problem method into 2 and decrease (<2-3 times) stack size needed for the method in recursion.


> [drlvm][lnx64][jit] SIGSEGV in VM code after appying H4514
> ----------------------------------------------------------
>
>                 Key: HARMONY-4568
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4568
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: linux64, SPECjbb2005, gc_cc->gc_gen in emconf
>            Reporter: Rustem Rafikov
>            Assignee: Mikhail Fursov
>         Attachments: bcstack.diff
>
>
> Hi All, 
> DRLVM crashes on SPECjbb2005 running on linux64 after applying H4514 (svn commit: r559409) with the following stack trace.
> Workaround to run: there is no crash with empty registerBCOffsets ;)
> Program terminated with signal 11, Segmentation fault.
> #0  0x00002aaaaac91acc in native_test_unwind_special () from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default/libharmonyvm.so
> (gdb) bt
> #0  0x00002aaaaac91acc in native_test_unwind_special () from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default/libharmonyvm.so
> #1  0x00002aaaaac916ba in walk_native_stack_registers () from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default/libharmonyvm.so
> #2  0x00002aaaaac9d05c in st_print_stack () from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default/libharmonyvm.so
> #3  0x00002aaaaac9c0ee in null_java_reference_handler () from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default/libharmonyvm.so
> #4  <signal handler called>
> #5  0x00002aaaacd40f58 in Jitrino::Ia32::CodeEmitter::registerBCOffsets ()
>    from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default//libjitrino.so
> #6  0x00002aaaacd418e8 in Jitrino::Ia32::CodeEmitter::registerBCOffsets ()
>    from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default//libjitrino.so
> #7  0x00002aaaacd418e8 in Jitrino::Ia32::CodeEmitter::registerBCOffsets ()
>    from /home/lab_perfstat/rrafikov/platform/rr-0730-lnx64-c/bin/default//libjitrino.so
> [... skip lot of similar lines...]

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