harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ilya Leviev (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-4047) [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\jet\rt.cpp":(173-169) at rt_unwind function
Date Tue, 05 Jun 2007 12:55:26 GMT
[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


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.


Mime
View raw message