You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Pavel Afremov (JIRA)" <ji...@apache.org> on 2006/10/03 13:48:21 UTC

[jira] Commented: (HARMONY-1650) [drlvm][exception handling] enqueuing references, doing finalization, running finalizers can lose a risen exception

    [ http://issues.apache.org/jira/browse/HARMONY-1650?page=comments#action_12439459 ] 
            
Pavel Afremov commented on HARMONY-1650:
----------------------------------------

Good idea. But I found one issue in the patch.

Java Method can't be started if exception is raised.  So after store exception information on the stack and before run startFinalization or  enqueue java methods, exn_clear should be called. Maybe exn_clear should be called from exn_store function to avoid missing in future.


> [drlvm][exception handling] enqueuing references, doing finalization, running finalizers can lose a risen exception
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-1650
>                 URL: http://issues.apache.org/jira/browse/HARMONY-1650
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Serguei Zapreyev
>            Priority: Minor
>         Attachments: a4.java, H1650.ex_impl.patch, lin.log, testGetMeth.java, win.log
>
>
> Memory allocation within VM causes irregularly enqueuing references, doing finalization, running 
> finalizers. These processes lead to losing an exception risen within a java programm executed by VM. 
> Please look at the following stack:
> 	harmonyvm.dll!exn_clear()  Line 113	C++
>  	harmonyvm.dll!Objects_To_Finalize::run_finalizers()  Line 343	C++
>  	harmonyvm.dll!vm_run_pending_finalizers()  Line 472	C++
>  	harmonyvm.dll!vm_hint_finalize()  Line 193	C++
>  	gc.dll!gc_alloc(unsigned int in_size=0x0000000c, unsigned int ah=0x013c1f40, void * thread_pointer=0x0102d1e8)  Line 243 + 0x8	C++
> <<<...>>>
> or at the following:
>  	vmcore.dll!exn_clear()  Line 106	C++
>  	vmcore.dll!References_To_Enqueue::enqueue_references()  Line 453 + 0x5	C++
>  	vmcore.dll!vm_enqueue_references()  Line 516	C++
>  	vmcore.dll!vm_hint_finalize()  Line 192	C++
>  	gc.dll!Garbage_Collector::check_hint_to_finalize()  Line 208 + 0xc	C++
>  	gc.dll!gc_alloc(unsigned int size=0x0000000c, unsigned int ah=0x00d71b90, void * tp=0x003be070)  Line 961	C++
> <<<...>>>
> So, this intricated enough bug leads to instability of VM's behaviour.
> I'm going to attach the fix of the issue.
> The detecting test will be attached as well.

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