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-4166) [drlvm][gc_gen][tc] Race condition at "gc_thread.h":(97-152) at thread_local_alloc() and alloc_context_reset() functions
Date Thu, 14 Jun 2007 13:16:26 GMT
[drlvm][gc_gen][tc] Race condition at "gc_thread.h":(97-152) at thread_local_alloc() and alloc_context_reset()
functions
------------------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-4166
                 URL: https://issues.apache.org/jira/browse/HARMONY-4166
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
            Reporter: Ilya Leviev


Race condition at "gc_thread.h":(97-152) at thread_local_alloc() and alloc_context_reset()
functions

TC report on thread unsafe access that result in race condition that occur during concurrent
execution of thread_local_alloc() and alloc_context_reset() functions

if it not affect correctness of execution I will mark it by special API for prevention of
further alarms on this race. 


Write -> Write data-race	
Memory write at "gc_thread.h":152 conflicts with a prior memory write at "gc_thread.h":97


Stack Trace: 

Context
	Function void interpreter(struct StackFrame &) "interpreter.cpp":2931
	Function Opcode_INVOKESTATIC "interpreter.cpp":2104
	Function interpreterInvokeStatic "interpreter.cpp":3312
	Function void interpreterInvokeStaticNative(struct StackFrame &,struct StackFrame &,struct
Method *) "interp_native_ia32.cpp":358
	Function invokeJNI "interp_native_ia32.cpp":49
	Function Java_java_lang_VMMemoryManager_runGC "java_lang_vmmemorymanager.cpp":138
	Function gc_force_gc "gc_for_vm.cpp":138
	Function void gc_reclaim_heap(struct GC *,unsigned int) "gc_common.cpp":300
	Function void gc_reset_mutator_context(struct GC *) "mutator.cpp":102
	Function void alloc_context_reset(struct Allocator *) "gc_thread.h":142

Definition
	Function hythread_create_with_group "thread_native_basic.c":136
	Function os_thread_create "os_thread.c":37
	Function _beginthreadex "threadex.c":145
	Function EntryPoint "dllcrt0.c":323
	Function threadstartex "threadex.c":241
	Function thread_start_proc "thread_native_basic.c":711
	Function wrapper_proc "thread_java_basic.c":82
	Function vm_attach "thread_generic.cpp":266
	Function gc_thread_init "gc_for_vm.cpp":152
	Function void mutator_initialize(struct GC *,void *) "mutator.cpp":30

1st Access
	Function Opcode_INVOKEVIRTUAL "interpreter.cpp":2060
	Function interpreterInvokeVirtual "interpreter.cpp":3509
	Function interpreterInvoke "interpreter.cpp":3427
	Function void interpreter(struct StackFrame &) "interpreter.cpp":2841
	Function Opcode_NEWARRAY "interpreter.cpp":1090
	Function void * vm_new_vector_primitive(struct Class *,int) "vm_arrays.cpp":138
	Function gc_alloc "mutator_alloc.cpp":79
	Function void * nos_alloc(unsigned int,struct Allocator *) "gen.cpp":274
	Function void * fspace_alloc(unsigned int,struct Allocator *) "fspace_alloc.cpp":55
	Function struct Partial_Reveal_Object * thread_local_alloc(unsigned int,struct Allocator
*) "gc_thread.h":97


	"95"	""	"     "
	"96"	""	"   if (new_free <= ceiling){"
	"97"	"*"	"     allocator->free= (void*)new_free;"
	"98"	""	"     return (Partial_Reveal_Object*)free;"
	"99"	""	"   }"


2nd Access
	Function void interpreter(struct StackFrame &) "interpreter.cpp":2931
	Function Opcode_INVOKESTATIC "interpreter.cpp":2104
	Function interpreterInvokeStatic "interpreter.cpp":3312
	Function void interpreterInvokeStaticNative(struct StackFrame &,struct StackFrame &,struct
Method *) "interp_native_ia32.cpp":358
	Function invokeJNI "interp_native_ia32.cpp":49
	Function Java_java_lang_VMMemoryManager_runGC "java_lang_vmmemorymanager.cpp":138
	Function gc_force_gc "gc_for_vm.cpp":138
	Function void gc_reclaim_heap(struct GC *,unsigned int) "gc_common.cpp":300
	Function void gc_reset_mutator_context(struct GC *) "mutator.cpp":102
	Function void alloc_context_reset(struct Allocator *) "gc_thread.h":152


	"150"	""	"   }"
	"151"	""	"     "
	"152"	"*"	"    allocator->free = NULL;"
	"153"	""	"    allocator->ceiling = NULL;"
	"154"	""	"    allocator->end = NULL;"


See also Source View screenshots. 



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