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

[jira] Closed: (HARMONY-4047) [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\rt.cpp":(173-169) at rt_unwind function

     [ https://issues.apache.org/jira/browse/HARMONY-4047?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ilya Leviev closed HARMONY-4047.
--------------------------------


Markup verified at r 557608. 
Thank you for applying this patch.


> [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\rt.cpp":(173-169) at rt_unwind function
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-4047
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4047
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Assignee: Mikhail Fursov
>         Attachments: HARMONY-4047_add_markup.patch, SourceViewScreenshot-1.jpg
>
>
> Known/proven race conditions markup at \vm\jitrino\src\jet\rt.cpp":(173-169) at rt_unwind function
> TC report on thread unsafe access that result in race condition that occur during concurrent execution of rt_unwind function. 
> As issue related to debug mode I have marked it by special API for prevention of further alarms on this race. 
> 1) Write -> Read data-race	
> Memory read at "rt.cpp":169 conflicts with a prior memory write at "rt.cpp":173
> 2) Write -> Write data-race
> Memory write at "rt.cpp":173 conflicts with a prior memory write at "rt.cpp":173
> Stack Trace: 
> Context
> 	Function gc_alloc_fast "mutator_alloc.cpp":120
> 	Function rth_aastore "jit_runtime_support.cpp":499
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_enable "hythread_ext.h":373
> 	Function Java_org_apache_harmony_vm_VMStack_getCallerClass "org_apache_harmony_vm_vmstack.cpp":59
> 	Function st_get_frame "stack_trace.cpp":137
> 	Function void si_goto_previous(struct StackIterator *,bool) "stack_iterator_ia32.cpp":315
> 	Function void Dll_JIT::unwind_stack_frame(struct Method *,struct JitFrameContext *) "dll_jit_intf.h":94
> 	Function JIT_unwind_stack_frame "drljitinterface.cpp":360
> 	Function void Jitrino::Jet::rt_unwind(void *,struct Method *,struct JitFrameContext *) "rt.cpp":106
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_enable "hythread_ext.h":373
> 	Function Java_org_apache_harmony_vm_VMStack_getCallerClass "org_apache_harmony_vm_vmstack.cpp":59
> 	Function st_get_frame "stack_trace.cpp":137
> 	Function void si_goto_previous(struct StackIterator *,bool) "stack_iterator_ia32.cpp":315
> 	Function void Dll_JIT::unwind_stack_frame(struct Method *,struct JitFrameContext *) "dll_jit_intf.h":94
> 	Function JIT_unwind_stack_frame "drljitinterface.cpp":360
> 	Function void Jitrino::Jet::rt_unwind(void *,struct Method *,struct JitFrameContext *) "rt.cpp":173
> 	"166"	""	" #ifdef _DEBUG"
> 	"167"	""	"     // presumption: only GP registers can be callee-save"
> 	"168"	""	"     static bool do_check = true;"
> 	"169"	""	"     for (unsigned i=0; do_check && i<ar_num; i++) {"
> 	"170"	""	"         AR ar = _ar(i);"
> 	"171"	""	"         assert(!is_callee_save(ar) || is_gr(ar));"
> 	"172"	""	"     }"
> 	"173"	"*"	"     do_check = false;"
> 	"174"	""	" #endif"
> 2nd Access
> 	Function gc_alloc_fast "mutator_alloc.cpp":120
> 	Function rth_aastore "jit_runtime_support.cpp":499
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_enable "hythread_ext.h":373
> 	Function Java_org_apache_harmony_vm_VMStack_getCallerClass "org_apache_harmony_vm_vmstack.cpp":59
> 	Function st_get_frame "stack_trace.cpp":137
> 	Function void si_goto_previous(struct StackIterator *,bool) "stack_iterator_ia32.cpp":315
> 	Function void Dll_JIT::unwind_stack_frame(struct Method *,struct JitFrameContext *) "dll_jit_intf.h":94
> 	Function JIT_unwind_stack_frame "drljitinterface.cpp":360
> 	Function void Jitrino::Jet::rt_unwind(void *,struct Method *,struct JitFrameContext *) "rt.cpp":169
> 	"166"	""	" #ifdef _DEBUG"
> 	"167"	""	"     // presumption: only GP registers can be callee-save"
> 	"168"	""	"     static bool do_check = true;"
> 	"169"	"*"	"     for (unsigned i=0; do_check && i<ar_num; i++) {"
> 	"170"	""	"         AR ar = _ar(i);"
> 	"171"	""	"         assert(!is_callee_save(ar) || is_gr(ar));"
> 	"172"	""	"     }"
> 	"173"	""	"     do_check = false;"
> 	"174"	""	" #endif"
> See also Source View screenshot

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