You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Xiao-Feng Li (JIRA)" <ji...@apache.org> on 2007/06/15 14:10:35 UTC
[jira] Assigned: (HARMONY-4175) [drlvm][gc_gen][tc] Race condition
at "gc_thread.h":(97-147) at thread_local_alloc() and alloc_context_reset()
functions
[ https://issues.apache.org/jira/browse/HARMONY-4175?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xiao-Feng Li reassigned HARMONY-4175:
-------------------------------------
Assignee: Xiao-Feng Li
> [drlvm][gc_gen][tc] Race condition at "gc_thread.h":(97-147) at thread_local_alloc() and alloc_context_reset() functions
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-4175
> URL: https://issues.apache.org/jira/browse/HARMONY-4175
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Assignee: Xiao-Feng Li
> Priority: Minor
> Attachments: SourceViewScreenshot-1.jpg
>
>
> Race condition at "gc_thread.h":(97-147) 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 -> Read data-race
> Memory read at "gc_thread.h":147 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
> "96" "" " if (new_free <= ceiling){"
> "97" "*" " allocator->free= (void*)new_free;"
> "98" "" " return (Partial_Reveal_Object*)free;"
> 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":147
> "146" "" " assert(block->status == BLOCK_IN_USE);"
> "147" "*" " block->free = allocator->free;"
> "148" "" " block->status = BLOCK_USED;"
> 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.