Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 59144 invoked from network); 17 Jul 2007 15:18:35 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 17 Jul 2007 15:18:35 -0000 Received: (qmail 11639 invoked by uid 500); 17 Jul 2007 15:18:30 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 11624 invoked by uid 500); 17 Jul 2007 15:18:30 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 11586 invoked by uid 99); 17 Jul 2007 15:18:30 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jul 2007 08:18:30 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jul 2007 08:18:26 -0700 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 285C771420C for ; Tue, 17 Jul 2007 08:18:06 -0700 (PDT) Message-ID: <25796705.1184685486162.JavaMail.jira@brutus> Date: Tue, 17 Jul 2007 08:18:06 -0700 (PDT) From: "Mikhail Fursov (JIRA)" To: commits@harmony.apache.org Subject: [jira] Resolved: (HARMONY-4048) [drlvm][jit][tc] Known/proven race conditions markup at \vm\jitrino\src\shared\HashTable.h:(113-117-121) at lookupEntry function In-Reply-To: <26808215.1181049806081.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HARMONY-4048?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mikhail Fursov resolved HARMONY-4048. ------------------------------------- Resolution: Fixed Committed as r556943 > [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 > Assignee: Mikhail Fursov > Attachments: HARMONY-4048_add_markup.patch, SourceViewscreenshot-1.jpg > > > 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::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::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::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.