[ 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.
|