[MULTI] Fixed data race introduced in the https://github.com/openvinotoolkit/openvino/pull/3300#3490
Merged
ilya-lavrenov merged 1 commit intoopenvinotoolkit:masterfrom Dec 7, 2020
Conversation
it is easy to capture when there are 2 app-level inference requests, but only single worker (MULTI) request
main thread | callback thread
___________________________________________________________________________
| <in the callback, the worker request>
| <the request returns itself to the "idle" queue>
| 1) idleGuard.Release()->try_push(workerRequestPtr)
2)<notified on vacant worker arrived via callback> |
3) starts another request with StartAsync | ...
4) <in the ThisRequestExecutor::run()> |
workerInferRequest->_task = std::move(task); | if (_inferPipelineTasks.try_pop(workerRequestPtr->task))
the last line introduces DATA RACE (sporadically manifested in the bad_function_call exception), the fix is in this commit
apankratovantonp
approved these changes
Dec 7, 2020
mryzhov
pushed a commit
to mryzhov/openvino
that referenced
this pull request
Dec 11, 2020
…it#3490) it is easy to capture when there are 2 app-level inference requests, but only single worker (MULTI) request main thread | callback thread ___________________________________________________________________________ | <in the callback, the worker request> | <the request returns itself to the "idle" queue> | 1) idleGuard.Release()->try_push(workerRequestPtr) 2)<notified on vacant worker arrived via callback> | 3) starts another request with StartAsync | ... 4) <in the ThisRequestExecutor::run()> | workerInferRequest->_task = std::move(task); | if (_inferPipelineTasks.try_pop(workerRequestPtr->task)) the last line introduces DATA RACE (sporadically manifested in the bad_function_call exception), the fix is in this commit
vzinovie
pushed a commit
to vzinovie/openvino
that referenced
this pull request
Dec 15, 2020
…it#3490) it is easy to capture when there are 2 app-level inference requests, but only single worker (MULTI) request main thread | callback thread ___________________________________________________________________________ | <in the callback, the worker request> | <the request returns itself to the "idle" queue> | 1) idleGuard.Release()->try_push(workerRequestPtr) 2)<notified on vacant worker arrived via callback> | 3) starts another request with StartAsync | ... 4) <in the ThisRequestExecutor::run()> | workerInferRequest->_task = std::move(task); | if (_inferPipelineTasks.try_pop(workerRequestPtr->task)) the last line introduces DATA RACE (sporadically manifested in the bad_function_call exception), the fix is in this commit
mryzhov
pushed a commit
to mryzhov/openvino
that referenced
this pull request
Dec 16, 2020
…it#3490) it is easy to capture when there are 2 app-level inference requests, but only single worker (MULTI) request main thread | callback thread ___________________________________________________________________________ | <in the callback, the worker request> | <the request returns itself to the "idle" queue> | 1) idleGuard.Release()->try_push(workerRequestPtr) 2)<notified on vacant worker arrived via callback> | 3) starts another request with StartAsync | ... 4) <in the ThisRequestExecutor::run()> | workerInferRequest->_task = std::move(task); | if (_inferPipelineTasks.try_pop(workerRequestPtr->task)) the last line introduces DATA RACE (sporadically manifested in the bad_function_call exception), the fix is in this commit
mryzhov
pushed a commit
to mryzhov/openvino
that referenced
this pull request
Jan 14, 2021
…it#3490) it is easy to capture when there are 2 app-level inference requests, but only single worker (MULTI) request main thread | callback thread ___________________________________________________________________________ | <in the callback, the worker request> | <the request returns itself to the "idle" queue> | 1) idleGuard.Release()->try_push(workerRequestPtr) 2)<notified on vacant worker arrived via callback> | 3) starts another request with StartAsync | ... 4) <in the ThisRequestExecutor::run()> | workerInferRequest->_task = std::move(task); | if (_inferPipelineTasks.try_pop(workerRequestPtr->task)) the last line introduces DATA RACE (sporadically manifested in the bad_function_call exception), the fix is in this commit
jiwaszki
pushed a commit
to akuporos/openvino
that referenced
this pull request
Jan 15, 2021
…it#3490) it is easy to capture when there are 2 app-level inference requests, but only single worker (MULTI) request main thread | callback thread ___________________________________________________________________________ | <in the callback, the worker request> | <the request returns itself to the "idle" queue> | 1) idleGuard.Release()->try_push(workerRequestPtr) 2)<notified on vacant worker arrived via callback> | 3) starts another request with StartAsync | ... 4) <in the ThisRequestExecutor::run()> | workerInferRequest->_task = std::move(task); | if (_inferPipelineTasks.try_pop(workerRequestPtr->task)) the last line introduces DATA RACE (sporadically manifested in the bad_function_call exception), the fix is in this commit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
it is easy to capture when there are 2 app-level inference requests, but only single worker (MULTI) request
main thread | callback thread
2) |
3) starts another request with StartAsync | ...
4) <in the ThisRequestExecutor::run()> |
workerInferRequest->_task = std::move(task); | if (_inferPipelineTasks.try_pop(workerRequestPtr->task))
the last line introduces DATA RACE (sporadically manifested in the bad_function_call exception), the fix is in this commit