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/05 15:25:36 UTC
[jira] Updated: (HARMONY-4048) [drlvm][jit][tc] Known/proven race
conditions markup at \vm\jitrino\src\shared\HashTable.h:(113-117-121) at
lookupEntry function
[ https://issues.apache.org/jira/browse/HARMONY-4048?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Leviev updated HARMONY-4048:
---------------------------------
Attachment: HARMONY-4048_add_markup.patch
> [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\shared\HashTable.h:(113-117-121) at lookupEntry function
> --------------------------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-4048
> URL: https://issues.apache.org/jira/browse/HARMONY-4048
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Attachments: HARMONY-4048_add_markup.patch
>
>
> Known/proven race conditions markup at \vm\jitrino\src\shared\HashTable.h:(113-117-121) at lookupEntry function
> TC report on thread unsafe access that result in race conditions that occur during concurrent execution of lookupEntry function.
> As issues related to debug mode I have marked it by special API for prevention of further alarms on this races.
> data-races
> 1)Write -> Read data-race
> Memory read at "hashtable.h":113 conflicts with a prior memory write at "hashtable.h":113
> 2)Write -> Read data-race
> Memory read at "hashtable.h":117 conflicts with a prior memory write at "hashtable.h":117
> 3)Write -> Read data-race
> Memory read at "hashtable.h":121 conflicts with a prior memory write at "hashtable.h":121
> Stack Trace:
> Context
> Function CompileMethod "em_intf.cpp":49
> Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":545
> Function vm_compile_method "c_interface.cpp":2572
> Function enum JIT_Result compile_do_compilation_jit(struct Method *,class JIT *) "compile.cpp":658
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":242
> Function void Jitrino::TypeManager::init(void) "type.cpp":390
> Function void Jitrino::KeyLinkHashTable<class Jitrino::CSEHashKey>::insert(class Jitrino::CSEHashKey *,void *) "hashtable.h":334
> Function void Jitrino::HashTableImpl::insert(void *,void *) "hashtable.h":73
> Function struct Jitrino::HashTableLink * Jitrino::HashTableImpl::lookupEntry(void *) "hashtable.h":111
> 1st Access
> Function CompileMethod "em_intf.cpp":49
> Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":545
> Function vm_compile_method "c_interface.cpp":2572
> Function enum JIT_Result compile_do_compilation_jit(struct Method *,class JIT *) "compile.cpp":658
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":242
> Function void Jitrino::TypeManager::init(void) "type.cpp":392
> Function void Jitrino::KeyLinkHashTable<class Jitrino::CSEHashKey>::insert(class Jitrino::CSEHashKey *,void *) "hashtable.h":334
> Function void Jitrino::HashTableImpl::insert(void *,void *) "hashtable.h":73
> Function struct Jitrino::HashTableLink * Jitrino::HashTableImpl::lookupEntry(void *) "hashtable.h":113/117/121
> "111" "" " virtual HashTableLink* lookupEntry(void* key) const {"
> "112" "" " #ifdef _DEBUG"
> "113" "*" " ((HashTableImpl *)this)->numLookup++;"
> "114" "" " #endif"
> "115" "" " for (HashTableLink* e = table[getTableIndex(key)]; e != NULL; e = e->next) {"
> "116" "" " #ifdef _DEBUG"
> "117" "*" " ((HashTableImpl *)this)->numLookupEntry++;"
> "118" "" " #endif"
> "119" "" " if (equals(e->keyPtr,key)) {"
> "120" "" " #ifdef _DEBUG"
> "121" "*" " ((HashTableImpl *)this)->numFound++;"
> "122" "" " #endif"
> "123" "" " return e;"
> "124" "" " }"
> 2nd Access
> Function CompileMethod "em_intf.cpp":49
> Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":545
> Function vm_compile_method "c_interface.cpp":2572
> Function enum JIT_Result compile_do_compilation_jit(struct Method *,class JIT *) "compile.cpp":658
> Function enum JIT_Result Dll_JIT::compile_method_with_params(void *,struct Method *,struct OpenMethodExecutionParams) "dll_jit_intf.h":86
> Function JIT_compile_method_with_params "drljitinterface.cpp":242
> Function void Jitrino::TypeManager::init(void) "type.cpp":390
> Function void Jitrino::KeyLinkHashTable<class Jitrino::CSEHashKey>::insert(class Jitrino::CSEHashKey *,void *) "hashtable.h":334
> Function void Jitrino::HashTableImpl::insert(void *,void *) "hashtable.h":73
> Function struct Jitrino::HashTableLink * Jitrino::HashTableImpl::lookupEntry(void *) "hashtable.h":113/117/121
> "111" "" " virtual HashTableLink* lookupEntry(void* key) const {"
> "112" "" " #ifdef _DEBUG"
> "113" "*" " ((HashTableImpl *)this)->numLookup++;"
> "114" "" " #endif"
> "115" "" " for (HashTableLink* e = table[getTableIndex(key)]; e != NULL; e = e->next) {"
> "116" "" " #ifdef _DEBUG"
> "117" "*" " ((HashTableImpl *)this)->numLookupEntry++;"
> "118" "" " #endif"
> "119" "" " if (equals(e->keyPtr,key)) {"
> "120" "" " #ifdef _DEBUG"
> "121" "*" " ((HashTableImpl *)this)->numFound++;"
> "122" "" " #endif"
> "123" "" " return e;"
> "124" "" " }"
> 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.