You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ap...@apache.org on 2022/05/05 13:43:26 UTC
[arrow] branch master updated: ARROW-16461: [C++] Fix sporadic Thread Sanitizer failure
This is an automated email from the ASF dual-hosted git repository.
apitrou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 19c66d822d ARROW-16461: [C++] Fix sporadic Thread Sanitizer failure
19c66d822d is described below
commit 19c66d822d9f6347c9fd5b2222e434739e48ec3b
Author: Antoine Pitrou <an...@python.org>
AuthorDate: Thu May 5 15:43:17 2022 +0200
ARROW-16461: [C++] Fix sporadic Thread Sanitizer failure
In debug mode the `ThreadedTaskGroup::finished_` member would be read unlocked, so make it atomic.
Note that the failure should be harmless, but still deserves fixing to improve CI reliability.
Closes #13067 from pitrou/ARROW-16461-atomic-finished
Authored-by: Antoine Pitrou <an...@python.org>
Signed-off-by: Antoine Pitrou <an...@python.org>
---
cpp/src/arrow/util/task_group.cc | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/cpp/src/arrow/util/task_group.cc b/cpp/src/arrow/util/task_group.cc
index 7e8ab64b70..0679b6ef1f 100644
--- a/cpp/src/arrow/util/task_group.cc
+++ b/cpp/src/arrow/util/task_group.cc
@@ -79,7 +79,8 @@ class ThreadedTaskGroup : public TaskGroup {
: executor_(executor),
stop_token_(std::move(stop_token)),
nremaining_(0),
- ok_(true) {}
+ ok_(true),
+ finished_(false) {}
~ThreadedTaskGroup() override {
// Make sure all pending tasks are finished, so that dangling references
@@ -200,12 +201,12 @@ class ThreadedTaskGroup : public TaskGroup {
StopToken stop_token_;
std::atomic<int32_t> nremaining_;
std::atomic<bool> ok_;
+ std::atomic<bool> finished_;
// These members use locking
std::mutex mutex_;
std::condition_variable cv_;
Status status_;
- bool finished_ = false;
util::optional<Future<>> completion_future_;
};