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/05/30 18:15:15 UTC

[jira] Created: (HARMONY-4004) [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143

[drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143
----------------------------------------------------------------------------------

                 Key: HARMONY-4004
                 URL: https://issues.apache.org/jira/browse/HARMONY-4004
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
            Reporter: Ilya Leviev
         Attachments: SourceViewScreenshot-1.jpg

TC report on thread unsafe access that result in race condition that occur during concurrent execution of current() function


if it not affect correctness of execution I will mark it by special API for prevention of further alarms on this race. 


Write -> Write data-race	
Memory write at "compilationcontext.cpp":143 conflicts with a prior memory write at "compilationcontext.cpp":143


Stack Trace: 

Context
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":794
	Function compile_do_compilation "compile.cpp":774
	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":263
	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":130


1st Access
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":794
	Function compile_do_compilation "compile.cpp":774
	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":263
	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143


	"141"	""	"     if (sp == 0)"
	"142"	""	"     {   // new thread"
	"143"	"*"	"         ++thread_nb;"
	"144"	""	"         sp = new TlsLogStreams();"
	"145"	""	"         tlslogstreams.put(sp);"
	"146"	""	"     }"



2nd Access
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":794
	Function compile_do_compilation "compile.cpp":774
	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":263
	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143


	"141"	""	"     if (sp == 0)"
	"142"	""	"     {   // new thread"
	"143"	"*"	"         ++thread_nb;"
	"144"	""	"         sp = new TlsLogStreams();"
	"145"	""	"         tlslogstreams.put(sp);"
	"146"	""	"     }"


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.


[jira] Updated: (HARMONY-4004) [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143

Posted by "Ilya Leviev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4004?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ilya Leviev updated HARMONY-4004:
---------------------------------

    Attachment: SourceViewScreenshot-1.jpg

> [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143
> ----------------------------------------------------------------------------------
>
>                 Key: HARMONY-4004
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4004
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Attachments: SourceViewScreenshot-1.jpg
>
>
> TC report on thread unsafe access that result in race condition that occur during concurrent execution of current() function
> if it not affect correctness of execution I will mark it by special API for prevention of further alarms on this race. 
> Write -> Write data-race	
> Memory write at "compilationcontext.cpp":143 conflicts with a prior memory write at "compilationcontext.cpp":143
> Stack Trace: 
> Context
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":130
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 2nd Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 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.


[jira] Updated: (HARMONY-4004) [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143

Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4004?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mikhail Fursov updated HARMONY-4004:
------------------------------------

    Attachment: 4004.patch

The fix. I added mutex object and surrounded the problem code with lock/unlock.
We can mark this code as unsafe, because it affects only logging, but IMO solution with locks is better.

> [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143
> ----------------------------------------------------------------------------------
>
>                 Key: HARMONY-4004
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4004
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Assignee: Mikhail Fursov
>         Attachments: 4004.patch, SourceViewScreenshot-1.jpg
>
>
> TC report on thread unsafe access that result in race condition that occur during concurrent execution of current() function
> if it not affect correctness of execution I will mark it by special API for prevention of further alarms on this race. 
> Write -> Write data-race	
> Memory write at "compilationcontext.cpp":143 conflicts with a prior memory write at "compilationcontext.cpp":143
> Stack Trace: 
> Context
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":130
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 2nd Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 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.


[jira] Assigned: (HARMONY-4004) [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143

Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4004?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mikhail Fursov reassigned HARMONY-4004:
---------------------------------------

    Assignee: Mikhail Fursov

> [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143
> ----------------------------------------------------------------------------------
>
>                 Key: HARMONY-4004
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4004
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Assignee: Mikhail Fursov
>         Attachments: SourceViewScreenshot-1.jpg
>
>
> TC report on thread unsafe access that result in race condition that occur during concurrent execution of current() function
> if it not affect correctness of execution I will mark it by special API for prevention of further alarms on this race. 
> Write -> Write data-race	
> Memory write at "compilationcontext.cpp":143 conflicts with a prior memory write at "compilationcontext.cpp":143
> Stack Trace: 
> Context
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":130
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 2nd Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 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.


[jira] Commented: (HARMONY-4004) [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143

Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4004?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12506548 ] 

Mikhail Fursov commented on HARMONY-4004:
-----------------------------------------

This is neither performance nor stability issue and can be fixed by marking this variable unsafe.

> [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143
> ----------------------------------------------------------------------------------
>
>                 Key: HARMONY-4004
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4004
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Attachments: SourceViewScreenshot-1.jpg
>
>
> TC report on thread unsafe access that result in race condition that occur during concurrent execution of current() function
> if it not affect correctness of execution I will mark it by special API for prevention of further alarms on this race. 
> Write -> Write data-race	
> Memory write at "compilationcontext.cpp":143 conflicts with a prior memory write at "compilationcontext.cpp":143
> Stack Trace: 
> Context
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":130
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 2nd Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 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.


[jira] Resolved: (HARMONY-4004) [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143

Posted by "Mikhail Fursov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4004?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mikhail Fursov resolved HARMONY-4004.
-------------------------------------

    Resolution: Fixed

Committed as r556943

> [drlvm][jit][tc]Race conditions at vm\jitrino\src\main\compilationcontext.cpp: 143
> ----------------------------------------------------------------------------------
>
>                 Key: HARMONY-4004
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4004
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Assignee: Mikhail Fursov
>         Attachments: 4004.patch, SourceViewScreenshot-1.jpg
>
>
> TC report on thread unsafe access that result in race condition that occur during concurrent execution of current() function
> if it not affect correctness of execution I will mark it by special API for prevention of further alarms on this race. 
> Write -> Write data-race	
> Memory write at "compilationcontext.cpp":143 conflicts with a prior memory write at "compilationcontext.cpp":143
> Stack Trace: 
> Context
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":130
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 2nd Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":794
> 	Function compile_do_compilation "compile.cpp":774
> 	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":263
> 	Function class Jitrino::LogStreams & Jitrino::LogStreams::current(class Jitrino::JITInstanceContext *) "compilationcontext.cpp":143
> 	"141"	""	"     if (sp == 0)"
> 	"142"	""	"     {   // new thread"
> 	"143"	"*"	"         ++thread_nb;"
> 	"144"	""	"         sp = new TlsLogStreams();"
> 	"145"	""	"         tlslogstreams.put(sp);"
> 	"146"	""	"     }"
> 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.