Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 19580 invoked from network); 23 May 2007 12:36:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 May 2007 12:36:37 -0000 Received: (qmail 68836 invoked by uid 500); 23 May 2007 12:36:43 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 68814 invoked by uid 500); 23 May 2007 12:36:43 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 68797 invoked by uid 99); 23 May 2007 12:36:43 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 May 2007 05:36:43 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 23 May 2007 05:36:36 -0700 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 79B4B714057 for ; Wed, 23 May 2007 05:36:16 -0700 (PDT) Message-ID: <29879992.1179923776496.JavaMail.jira@brutus> Date: Wed, 23 May 2007 05:36:16 -0700 (PDT) From: "Ilya Leviev (JIRA)" To: commits@harmony.apache.org Subject: [jira] Updated: (HARMONY-3858) [drlvm][jit] Known/proven race conditions markup at \vm\vmcore\src\jit\jit_runtime_support.cpp(L367, L374) In-Reply-To: <27564591.1179161116325.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HARMONY-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.