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/14 18:45:16 UTC

[jira] Created: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)

[drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)
----------------------------------------------------------------------------------------------------------

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

There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats 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 "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367



Stack Traces1: 

Context
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366



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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367

2nd Access
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367


""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
"0x890F0"	"366"	""	" {"
"0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
"0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
"0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
"0x8915E"	"370"	""	"     } else {"
"0x89160"	"371"	""	"         if (o->vt()->clss == super)"




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


Stack Traces 2: 

Context
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366


1st Access
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_self "hythread.h":465
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_self "hythread.h":465
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
	Function hythread_self "hythread.h":465
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

2nd Access
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Updated: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)

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

Ilya Leviev updated HARMONY-3858:
---------------------------------

    Attachment: HARMONY-3858_add_markup.patch

> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats 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 "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Updated: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)

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

Ilya Leviev updated HARMONY-3858:
---------------------------------

    Description: 
There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats function 

As issues related to vm statistic data collection in debug mode and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.

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



Stack Traces1: 

Context
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366



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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367

2nd Access
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367


""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
"0x890F0"	"366"	""	" {"
"0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
"0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
"0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
"0x8915E"	"370"	""	"     } else {"
"0x89160"	"371"	""	"         if (o->vt()->clss == super)"




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


Stack Traces 2: 

Context
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366


1st Access
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_self "hythread.h":465
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_self "hythread.h":465
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
	Function hythread_self "hythread.h":465
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

2nd Access
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

  was:
There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats 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 "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367



Stack Traces1: 

Context
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366



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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367

2nd Access
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367


""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
"0x890F0"	"366"	""	" {"
"0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
"0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
"0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
"0x8915E"	"370"	""	"     } else {"
"0x89160"	"371"	""	"         if (o->vt()->clss == super)"




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


Stack Traces 2: 

Context
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366


1st Access
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_self "hythread.h":465
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_self "hythread.h":465
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
	Function hythread_self "hythread.h":465
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

2nd Access
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

        Summary: [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)  (was: [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369))

> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch, screenshot-1.jpg
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats function 
> As issues related to vm statistic data collection in debug mode and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Updated: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)

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

Ilya Leviev updated HARMONY-3858:
---------------------------------

    Attachment: screenshot-1.jpg

> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch, screenshot-1.jpg
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats 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 "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Assigned: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)

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

Alexey Varlamov reassigned HARMONY-3858:
----------------------------------------

    Assignee: Alexey Varlamov

> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Assignee: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch, screenshot-1.jpg
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats function 
> As issues related to vm statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Updated: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)

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

Ilya Leviev updated HARMONY-3858:
---------------------------------

    Description: 
There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats function 

As issues related to vm statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.

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



Stack Traces1: 

Context
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366



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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367

2nd Access
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367


""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
"0x890F0"	"366"	""	" {"
"0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
"0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
"0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
"0x8915E"	"370"	""	"     } else {"
"0x89160"	"371"	""	"         if (o->vt()->clss == super)"




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


Stack Traces 2: 

Context
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366


1st Access
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_self "hythread.h":465
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_self "hythread.h":465
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
	Function hythread_self "hythread.h":465
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

2nd Access
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

  was:
There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats function 

As issues related to vm statistic data collection in debug mode and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.

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



Stack Traces1: 

Context
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366



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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367

2nd Access
	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 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_try_enter "thread_native_thin_monitor.c":341
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function jthread_monitor_enter "thread_java_monitors.c":157
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367


""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
"0x890F0"	"366"	""	" {"
"0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
"0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
"0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
"0x8915E"	"370"	""	"     } else {"
"0x89160"	"371"	""	"         if (o->vt()->clss == super)"




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


Stack Traces 2: 

Context
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366


1st Access
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_self "hythread.h":465
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function hythread_self "hythread.h":465
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
	Function hythread_self "hythread.h":465
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

2nd Access
	Function m2n_free_local_handles "m2n_ia32.cpp":268
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function vm_get_gc_thread_local "c_interface.cpp":2334
	Function gc_alloc_fast "gc_for_vm.cpp":178
	Function is_class_initialized "jit_runtime_support.cpp":702
	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
	Function hythread_suspend_disable "hythread_ext.h":421
	Function m2n_pop_local_handles "m2n_ia32.cpp":257
	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369


> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch, screenshot-1.jpg
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats function 
> As issues related to vm statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Updated: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)

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

Ilya Leviev updated HARMONY-3858:
---------------------------------

    Attachment:     (was: HARMONY-3858_add_markup.patch)

> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats 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 "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Closed: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)

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

Alexey Varlamov closed HARMONY-3858.
------------------------------------

    Resolution: Fixed

Fixed at revision: 543439


> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Assignee: Alexey Varlamov
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch, screenshot-1.jpg
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats function 
> As issues related to vm statistic data collection and it not affect correctness of execution I mark it by special API for prevention of further alarms on this race.
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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


[jira] Updated: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)

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

Ilya Leviev updated HARMONY-3858:
---------------------------------

    Attachment: HARMONY-3858_add_markup.patch

> [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L369)
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3858
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3858
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Ilya Leviev
>            Priority: Minor
>         Attachments: HARMONY-3858_add_markup.patch
>
>
> There are thread unsafe access that result in race condition that occur during concurrent execution of rth_update_checkcast_stats 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 "jit_runtime_support.cpp":367 conflicts with a prior memory write at "jit_runtime_support.cpp":367
> Stack Traces1: 
> Context
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> 2nd Access
> 	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 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_try_enter "thread_native_thin_monitor.c":341
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function jthread_monitor_enter "thread_java_monitors.c":157
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":367
> ""	"365"	""	" static void rth_update_checkcast_stats(ManagedObject* o, Class* super)"
> "0x890F0"	"366"	""	" {"
> "0x89107"	"367"	"*"	"     VM_Statistics::get_vm_stats().num_checkcast ++;"
> "0x8912A"	"368"	""	"     if (o == (ManagedObject*)VM_Global_State::loader_env->managed_null) {"
> "0x8913B"	"369"	"*"	"         VM_Statistics::get_vm_stats().num_checkcast_null++;"
> "0x8915E"	"370"	""	"     } else {"
> "0x89160"	"371"	""	"         if (o->vt()->clss == super)"
> Write -> Write data-race	
> Memory write at "jit_runtime_support.cpp":369 conflicts with a prior memory write at "jit_runtime_support.cpp":369
> Stack Traces 2: 
> Context
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":366
> 1st Access
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_self "hythread.h":465
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function hythread_self "hythread.h":465
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function rth_get_interface_vtable "jit_runtime_support.cpp":651
> 	Function hythread_self "hythread.h":465
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369
> 2nd Access
> 	Function m2n_free_local_handles "m2n_ia32.cpp":268
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function vm_get_gc_thread_local "c_interface.cpp":2334
> 	Function gc_alloc_fast "gc_for_vm.cpp":178
> 	Function is_class_initialized "jit_runtime_support.cpp":702
> 	Function class VM_thread * get_thread_ptr_stub(void) "thread_manager.cpp":138
> 	Function hythread_suspend_disable "hythread_ext.h":421
> 	Function m2n_pop_local_handles "m2n_ia32.cpp":257
> 	Function rth_update_checkcast_stats "jit_runtime_support.cpp":369

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