From: Jiri Olsa <jolsa@redhat.com>
To: Anand K Mistry <amistry@google.com>
Cc: linux-perf-users@vger.kernel.org,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Namhyung Kim <namhyung@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] perf record: Use an eventfd to wakeup when done
Date: Wed, 13 May 2020 13:39:41 +0200 [thread overview]
Message-ID: <20200513113941.GK3158213@krava> (raw)
In-Reply-To: <20200513122012.v3.1.I4d7421c6bbb1f83ea58419082481082e19097841@changeid>
On Wed, May 13, 2020 at 12:20:23PM +1000, Anand K Mistry wrote:
> The setting and checking of 'done' contains a rare race where the signal
> handler setting 'done' is run after checking to break the loop, but
> before waiting in evlist__poll(). In this case, the main loop won't wake
> up until either another signal is sent, or the perf data fd causes a
> wake up.
>
> The following simple script can trigger this condition (but you might
> need to run it for several hours):
> for ((i = 0; i >= 0; i++)) ; do
> echo "Loop $i"
> delay=$(echo "scale=4; 0.1 * $RANDOM/32768" | bc)
> ./perf record -- sleep 30000000 >/dev/null&
> pid=$!
> sleep $delay
> kill -TERM $pid
> echo "PID $pid"
> wait $pid
> done
>
> At some point, the loop will stall. Adding logging, even though perf has
> received the SIGTERM and set 'done = 1', perf will remain sleeping until
> a second signal is sent.
>
> Signed-off-by: Anand K Mistry <amistry@google.com>
>
> ---
>
> Changes in v3:
> - Move done_fd creation to below session initialisation
> - Close done_fd on exit
> - Log errno when write(done_fd) fails
Acked-by: Jiri Olsa <jolsa@redhat.com>
thanks,
jirka
next prev parent reply other threads:[~2020-05-13 11:39 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-08 4:56 [PATCH] perf record: Use an eventfd to wakeup when done Anand K Mistry
2020-05-11 11:28 ` Jiri Olsa
2020-05-12 4:59 ` Anand K Mistry
2020-05-12 12:12 ` Jiri Olsa
2020-05-12 14:12 ` Arnaldo Carvalho de Melo
2020-05-13 2:30 ` Anand K. Mistry
2020-05-13 2:20 ` [PATCH v3] " Anand K Mistry
2020-05-13 11:39 ` Jiri Olsa [this message]
2020-05-13 14:03 ` Arnaldo Carvalho de Melo
2020-05-20 15:47 ` Arnaldo Carvalho de Melo
2020-05-23 13:34 ` Andi Kleen
2020-05-25 1:43 ` Anand K. Mistry
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=20200513113941.GK3158213@krava \
--to=jolsa@redhat.com \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=amistry@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.