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/04/20 13:17:15 UTC

[jira] Created: (HARMONY-3714) [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp

[drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp
------------------------------------------------------

                 Key: HARMONY-3714
                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
            Reporter: Ilya Leviev
            Priority: Minor


There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.

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

Stack Traces: 

Context
	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
	Function ExecuteMethod "em_intf.cpp":43
	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512


1st Access
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515

2nd Access
	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
	Function ExecuteMethod "em_intf.cpp":43
	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515



Code: drlemimpl.cpp: 515

"0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
""          	"513"	""	"     //initial method compilation. Select chain to use."
""      	"514"	""	" "
"0x4507"	"515"	"*"	"     nMethodsCompiled++;"
""      	"516"	""	"     //these vars used for logging"
"0x4516"	"517"	""	"     const char* methodName = NULL;"
"0x451D"	"518"	""	"     const char* className = NULL;"
"0x4524"	"519"	""	"     const char* signature = NULL;"
"0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Gregory Shimansky updated HARMONY-3714:
---------------------------------------

    Summary: [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)  (was: [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515))

> [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Assigned To: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Attachment: HARMONY-3714_add_markup_update.patch

> [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Assigned To: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (HARMONY-3714) [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Alexey Varlamov closed HARMONY-3714.
------------------------------------

    Resolution: Fixed

Applied at r541559

> [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Assigned To: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Attachment:     (was: HARMONY-3714_add_markup_update.patch)

> [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Assigned To: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-3714) [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Mikhail Fursov commented on HARMONY-3714:
-----------------------------------------

The patch is OK. Compilation method number is used for statistics only and can differ for a method on the same workload from run to run because of concurrency.
Please commit.

> [drlvm][em] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Assigned To: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Patch Info: [Patch Available]

> [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp
> ------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Description: 
There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.

If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 


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

Stack Traces: 

Context
	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
	Function ExecuteMethod "em_intf.cpp":43
	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512


1st Access
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515

2nd Access
	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
	Function ExecuteMethod "em_intf.cpp":43
	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515



Code: drlemimpl.cpp: 515

"0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
""          	"513"	""	"     //initial method compilation. Select chain to use."
""      	"514"	""	" "
"0x4507"	"515"	"*"	"     nMethodsCompiled++;"
""      	"516"	""	"     //these vars used for logging"
"0x4516"	"517"	""	"     const char* methodName = NULL;"
"0x451D"	"518"	""	"     const char* className = NULL;"
"0x4524"	"519"	""	"     const char* signature = NULL;"
"0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"


  was:
There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.

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

Stack Traces: 

Context
	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
	Function ExecuteMethod "em_intf.cpp":43
	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512


1st Access
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515

2nd Access
	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
	Function ExecuteMethod "em_intf.cpp":43
	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function void * compile_me(struct Method *) "compile.cpp":790
	Function compile_do_compilation "compile.cpp":770
	Function CompileMethod "em_intf.cpp":49
	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515



Code: drlemimpl.cpp: 515

"0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
""          	"513"	""	"     //initial method compilation. Select chain to use."
""      	"514"	""	" "
"0x4507"	"515"	"*"	"     nMethodsCompiled++;"
""      	"516"	""	"     //these vars used for logging"
"0x4516"	"517"	""	"     const char* methodName = NULL;"
"0x451D"	"518"	""	"     const char* className = NULL;"
"0x4524"	"519"	""	"     const char* signature = NULL;"
"0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"



> [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Comment: was deleted

> [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp
> ------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (HARMONY-3714) [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Alexey Varlamov reassigned HARMONY-3714:
----------------------------------------

    Assignee: Alexey Varlamov

> [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>         Assigned To: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Attachment: HARMONY-3714_add_markup.patch

TC have reported about the race. 
If it not affect correctness of execution I have marked it by special API for prevention of further alarms on this race. 

DEPENDENS: The patch may be applied only after committing patch for JIRA HARMONY-3537 which contains API with markup functions. 


> [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp
> ------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Summary: [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)  (was: [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp)

> [drlvm][EM] Known/proven race condition markup at vm\em\src\ drlemimpl.cpp (515)
> --------------------------------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-3714) [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp

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

Ilya Leviev updated HARMONY-3714:
---------------------------------

    Attachment: HARMONY-3714_add_markup_update.patch

Patch updated as header file name have changed from port_nonatomic.h to port_threadunsafe.h 


> [drlvm][EM] Race condition at vm\em\src\ drlemimpl.cpp
> ------------------------------------------------------
>
>                 Key: HARMONY-3714
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3714
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3714_add_markup.patch, HARMONY-3714_add_markup_update.patch
>
>
> There are thread unsafe change of nMethodsCompiled variable that result in race condition that occur during concurrent execution of compileMethod function.
> Write -> Write data-race -Memory write at "drlemimpl.cpp":515 conflicts with a prior memory write at "drlemimpl.cpp":515
> Stack Traces: 
> Context
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":512
> 1st Access
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_thin_monitor_exit "thread_native_thin_monitor.c":420
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> 2nd Access
> 	Function void vm_execute_java_method_array(struct _jmethodID *,union jvalue *,union jvalue *) "ini.cpp":51
> 	Function ExecuteMethod "em_intf.cpp":43
> 	Function void DrlEMImpl::executeMethod(struct _jmethodID *,union jvalue *,union jvalue *) "drlemimpl.cpp":509
> 	Function void JIT_execute_method_default(void *,struct _jmethodID *,union jvalue *,union jvalue *) "ini_ia32.cpp":199
> 	Function vm_invoke_native_array_stub "ini_ia32.cpp":76
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function void * compile_me(struct Method *) "compile.cpp":790
> 	Function compile_do_compilation "compile.cpp":770
> 	Function CompileMethod "em_intf.cpp":49
> 	Function enum JIT_Result DrlEMImpl::compileMethod(struct Method *) "drlemimpl.cpp":515
> Code: drlemimpl.cpp: 515
> "0x44D0"	"512"	""	" JIT_Result DrlEMImpl::compileMethod(Method_Handle mh) {"
> ""          	"513"	""	"     //initial method compilation. Select chain to use."
> ""      	"514"	""	" "
> "0x4507"	"515"	"*"	"     nMethodsCompiled++;"
> ""      	"516"	""	"     //these vars used for logging"
> "0x4516"	"517"	""	"     const char* methodName = NULL;"
> "0x451D"	"518"	""	"     const char* className = NULL;"
> "0x4524"	"519"	""	"     const char* signature = NULL;"
> "0x452B"	"520"	""	"     size_t n = nMethodsCompiled;"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.