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/06/14 17:23:26 UTC
[jira] Updated: (HARMONY-4174) [drlvm][gc_gen][tc] Race condition
at "gc_thread.h":(116-146) at allocator_init_free_block() and
alloc_context_reset() functions
[ https://issues.apache.org/jira/browse/HARMONY-4174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev updated HARMONY-4174:
---------------------------------
Priority: Minor (was: Major)
> [drlvm][gc_gen][tc] Race condition at "gc_thread.h":(116-146) at allocator_init_free_block() and alloc_context_reset() functions
> --------------------------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-4174
> URL: https://issues.apache.org/jira/browse/HARMONY-4174
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Priority: Minor
>
> Race condition at "gc_thread.h":(116-146) at allocator_init_free_block() and alloc_context_reset() functions
> TC report on thread unsafe access that result in race condition that occur during concurrent execution of allocator_init_free_block() 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 -> Read data-race
> Memory read at "gc_thread.h":146 conflicts with a prior memory write at "gc_thread.h":116
> 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 main "cmain.c":146
> Function gpProtectedMain "main.c":391
> Function invocation "main.c":668
> Function JNI_CreateJavaVM "jni.cpp":499
> Function int vm_init1(struct JavaVM_Internal *,struct JavaVMInitArgs *) "vm_init.cpp":693
> Function gc_init "gc_for_vm.cpp":56
> Function void gc_gen_initialize(struct GC_Gen *,unsigned int,unsigned int) "gen.cpp":210
> Function void gc_nos_initialize(struct GC_Gen *,void *,unsigned int,unsigned int) "gen.h":125
> Function void fspace_initialize(struct GC *,void *,unsigned int,unsigned int) "fspace.cpp":52
> Function void * vm_commit_mem(void *,unsigned int) "gc_platform.h":225
> 1st Access
> Function void interpreter(struct StackFrame &) "interpreter.cpp":2844
> Function Opcode_NEW "interpreter.cpp":1254
> Function struct ManagedObject * class_alloc_new_object(struct Class *) "jit_runtime_support.cpp":2589
> Function struct ManagedObject * Class::allocate_instance(void) "class.cpp":478
> Function void * vm_alloc_and_report_ti(unsigned int,unsigned int,void *,struct Class *) "jvmti_event.cpp":1359
> 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":61
> Function fspace_alloc_block "fspace_alloc.cpp":40
> Function void allocator_init_free_block(struct Allocator *,struct Block_Header *) "gc_thread.h":116
> "115" "" " assert(alloc_block->status == BLOCK_FREE);"
> "116" "*" " alloc_block->status = BLOCK_IN_USE;"
> 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":146
> "145" "" " if( block != NULL ){ "
> "146" "*" " assert(block->status == BLOCK_IN_USE);"
> 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.