From: Numfor Mbiziwo-Tiapo <nums@google.com>
To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org,
alexander.shishkin@linux.intel.com, jolsa@redhat.com,
namhyung@kernel.org, songliubraving@fb.com, mbd@fb.com
Cc: linux-kernel@vger.kernel.org, irogers@google.com,
eranian@google.com, Numfor Mbiziwo-Tiapo <nums@google.com>
Subject: [PATCH] Fix perf test data race for tsan build
Date: Wed, 10 Jul 2019 15:16:20 -0700 [thread overview]
Message-ID: <20190710221620.211059-1-nums@google.com> (raw)
The tsan build of perf gives a data race warning in
mmap-thread-lookup.c when perf test is run on our local machines.
This is because there is no lock around the "go_away" variable in
"mmap-thread-lookup.c".
The warning is difficult to reproduce from the tip branch and we
suspect it has something to do with tsan working differently
depending on the clang version.
The warning can be silenced by adding locks around the variable
but it is better practice to make the variable atomic and use
the atomic_set and atomic_read functions. This does not actually
silence the warning because tsan doesn't recognize the atomic
functions as thread safe, but in actuality it should prevent a
data race.
Signed-off-by: Numfor Mbiziwo-Tiapo <nums@google.com>
---
tools/perf/tests/mmap-thread-lookup.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/tools/perf/tests/mmap-thread-lookup.c b/tools/perf/tests/mmap-thread-lookup.c
index 5ede9b561d32..f4cbb3d92a46 100644
--- a/tools/perf/tests/mmap-thread-lookup.c
+++ b/tools/perf/tests/mmap-thread-lookup.c
@@ -17,7 +17,7 @@
#define THREADS 4
-static int go_away;
+static atomic_t go_away;
struct thread_data {
pthread_t pt;
@@ -64,7 +64,7 @@ static void *thread_fn(void *arg)
return NULL;
}
- while (!go_away) {
+ while (!atomic_read(&go_away)) {
/* Waiting for main thread to kill us. */
usleep(100);
}
@@ -98,7 +98,7 @@ static int threads_create(void)
struct thread_data *td0 = &threads[0];
int i, err = 0;
- go_away = 0;
+ atomic_set(&go_away, 0);
/* 0 is main thread */
if (thread_init(td0))
@@ -118,7 +118,7 @@ static int threads_destroy(void)
/* cleanup the main thread */
munmap(td0->map, page_size);
- go_away = 1;
+ atomic_set(&go_away, 1);
for (i = 1; !err && i < THREADS; i++)
err = pthread_join(threads[i].pt, NULL);
--
2.22.0.410.gd8fdbe21b5-goog
next reply other threads:[~2019-07-10 22:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-10 22:16 Numfor Mbiziwo-Tiapo [this message]
2019-07-16 9:10 ` Jiri Olsa
2019-07-16 12:34 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190710221620.211059-1-nums@google.com \
--to=nums@google.com \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=eranian@google.com \
--cc=irogers@google.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mbd@fb.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=songliubraving@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®