You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Pavel Afremov (JIRA)" <ji...@apache.org> on 2007/05/07 14:29:15 UTC
[jira] Commented: (HARMONY-2987) [drlvm][vmcore] [util] Race
condition in vmcore\src\util\win\ia32\ nt_exception_filter.cpp stack
functions
[ https://issues.apache.org/jira/browse/HARMONY-2987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12494030 ]
Pavel Afremov commented on HARMONY-2987:
----------------------------------------
Two threads may set the equal values to variable. Because values are the same it isn't real race condition.
> [drlvm][vmcore] [util] Race condition in vmcore\src\util\win\ia32\ nt_exception_filter.cpp stack functions
> -----------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-2987
> URL: https://issues.apache.org/jira/browse/HARMONY-2987
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Ilya Leviev
> Assigned To: weldon washburn
>
> There are 3 occurrences of thread unsafe access to follow fields that result in race condition.
> static size_t common_stack_size;
> static size_t common_guard_stack_size;
> static size_t common_guard_page_size;
> (i)
> First race condition occur during concurrent execution of get_stack_size() and init_stack_info() with respect to common_stack_size field.
> Read -> Write data-race:
> Memory write at "nt_exception_filter.cpp":175 conflicts with a prior memory read at "nt_exception_filter.cpp":161
> Stack Traces:
> Context
> Function hythread_create_with_group "thread_native_basic.c":142
> Function apr_thread_create "thread.c":113
> Function _beginthreadex "threadex.c":145
> Function EntryPoint "dllcrt0.c":323
> Function threadstartex "threadex.c":241
> Function dummy_worker "thread.c":79
> Function thread_start_proc "thread_native_basic.c":723
> Function wrapper_proc "thread_java_basic.c":83
> Function vm_attach "thread_generic.cpp":193
> Function void init_stack_info(void) "nt_exception_filter.cpp":173
> 1st Access
> Function Opcode_INVOKEVIRTUAL "interpreter.cpp":2054
> Function interpreterInvokeVirtual "interpreter.cpp":3463
> Function interpreterInvoke "interpreter.cpp":3381
> Function void interpreter(struct StackFrame &) "interpreter.cpp":2900
> Function Opcode_INVOKEVIRTUAL "interpreter.cpp":2054
> Function interpreterInvokeVirtual "interpreter.cpp":3463
> Function interpreterInvoke "interpreter.cpp":3381
> Function void interpreter(struct StackFrame &) "interpreter.cpp":2543
> Function unsigned int get_available_stack_size(void) "nt_exception_filter.cpp":207
> Function unsigned int get_stack_size(void) "nt_exception_filter.cpp":161
> 2nd Access
> Function hythread_create_with_group "thread_native_basic.c":142
> Function apr_thread_create "thread.c":113
> Function _beginthreadex "threadex.c":145
> Function EntryPoint "dllcrt0.c":323
> Function threadstartex "threadex.c":241
> Function dummy_worker "thread.c":79
> Function thread_start_proc "thread_native_basic.c":723
> Function wrapper_proc "thread_java_basic.c":83
> Function vm_attach "thread_generic.cpp":193
> Function void init_stack_info(void) "nt_exception_filter.cpp":175
> (ii)
> Second race condition occur during concurrent execution of get_guard_stack_size() and init_stack_info() with respect to common_guard_stack_size field.
> Read -> Write data-race: Memory write at "nt_exception_filter.cpp":176 conflicts with a prior memory read at "nt_exception_filter.cpp":165
> Stack Traces:
> Context
> Function hythread_create_with_group "thread_native_basic.c":142
> Function apr_thread_create "thread.c":113
> Function _beginthreadex "threadex.c":145
> Function EntryPoint "dllcrt0.c":323
> Function threadstartex "threadex.c":241
> Function dummy_worker "thread.c":79
> Function thread_start_proc "thread_native_basic.c":723
> Function wrapper_proc "thread_java_basic.c":83
> Function vm_attach "thread_generic.cpp":193
> Function void init_stack_info(void) "nt_exception_filter.cpp":173
> 1st Access
> Function Opcode_INVOKEVIRTUAL "interpreter.cpp":2054
> Function interpreterInvokeVirtual "interpreter.cpp":3463
> Function interpreterInvoke "interpreter.cpp":3381
> Function void interpreter(struct StackFrame &) "interpreter.cpp":2900
> Function Opcode_INVOKEVIRTUAL "interpreter.cpp":2054
> Function interpreterInvokeVirtual "interpreter.cpp":3463
> Function interpreterInvoke "interpreter.cpp":3381
> Function void interpreter(struct StackFrame &) "interpreter.cpp":2543
> Function unsigned int get_available_stack_size(void) "nt_exception_filter.cpp":207
> Function unsigned int get_guard_stack_size(void) "nt_exception_filter.cpp":165
> 2nd Access
> Function hythread_create_with_group "thread_native_basic.c":142
> Function apr_thread_create "thread.c":113
> Function _beginthreadex "threadex.c":145
> Function EntryPoint "dllcrt0.c":323
> Function threadstartex "threadex.c":241
> Function dummy_worker "thread.c":79
> Function thread_start_proc "thread_native_basic.c":723
> Function wrapper_proc "thread_java_basic.c":83
> Function vm_attach "thread_generic.cpp":193
> Function void init_stack_info(void) "nt_exception_filter.cpp":176
> (iii)
> Third race condition occur during concurrent execution of get_guard_page_size() and init_stack_info() with respect to common_guard_page_size.
> Read -> Write data-race: Memory write at "nt_exception_filter.cpp":177 conflicts with a prior memory read at "nt_exception_filter.cpp":169
> Stack Traces:
> Context
> Function hythread_create_with_group "thread_native_basic.c":142
> Function apr_thread_create "thread.c":113
> Function _beginthreadex "threadex.c":145
> Function EntryPoint "dllcrt0.c":323
> Function threadstartex "threadex.c":241
> Function dummy_worker "thread.c":79
> Function thread_start_proc "thread_native_basic.c":723
> Function wrapper_proc "thread_java_basic.c":83
> Function vm_attach "thread_generic.cpp":193
> Function void init_stack_info(void) "nt_exception_filter.cpp":173
> 1st Access
> Function Opcode_INVOKEVIRTUAL "interpreter.cpp":2054
> Function interpreterInvokeVirtual "interpreter.cpp":3463
> Function interpreterInvoke "interpreter.cpp":3381
> Function void interpreter(struct StackFrame &) "interpreter.cpp":2900
> Function Opcode_INVOKEVIRTUAL "interpreter.cpp":2054
> Function interpreterInvokeVirtual "interpreter.cpp":3463
> Function interpreterInvoke "interpreter.cpp":3381
> Function void interpreter(struct StackFrame &) "interpreter.cpp":2543
> Function unsigned int get_available_stack_size(void) "nt_exception_filter.cpp":207
> Function unsigned int get_guard_page_size(void) "nt_exception_filter.cpp":169
> 2nd Access
> Function hythread_create_with_group "thread_native_basic.c":142
> Function apr_thread_create "thread.c":113
> Function _beginthreadex "threadex.c":145
> Function EntryPoint "dllcrt0.c":323
> Function threadstartex "threadex.c":241
> Function dummy_worker "thread.c":79
> Function thread_start_proc "thread_native_basic.c":723
> Function wrapper_proc "thread_java_basic.c":83
> Function vm_attach "thread_generic.cpp":193
> Function void init_stack_info(void) "nt_exception_filter.cpp":177
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.