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.