On 09/04/2014 12:59 AM, Arnaldo Carvalho de Melo wrote: > From: Arnaldo Carvalho de Melo <[email protected]> > > So that we don't continue polling on vanished file descriptors, i.e. > file descriptors for events monitoring threads that exited. > > I.e. the following 'perf record' command now exits as expected, instead > of staying in an eternal loop: > > $ sleep 5s & > $ perf record -p `pidof sleep` > > Reported-by: Jiri Olsa <[email protected]> > Acked-by: Jiri Olsa <[email protected]> > Cc: Adrian Hunter <[email protected]> > Cc: David Ahern <[email protected]> > Cc: Don Zickus <[email protected]> > Cc: Frederic Weisbecker <[email protected]> > Cc: Jiri Olsa <[email protected]> > Cc: Mike Galbraith <[email protected]> > Cc: Namhyung Kim <[email protected]> > Cc: Paul Mackerras <[email protected]> > Cc: Peter Zijlstra <[email protected]> > Cc: Stephane Eranian <[email protected]> > Link: http://lkml.kernel.org/n/[email protected] > Signed-off-by: Arnaldo Carvalho de Melo <[email protected]> > --- > tools/perf/builtin-record.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c > index 87e28a4e33ba..b87708ce09c9 100644 > --- a/tools/perf/builtin-record.c > +++ b/tools/perf/builtin-record.c > @@ -467,6 +467,9 @@ static int __cmd_record(struct record *rec, int argc, > const char **argv) > if (err > 0 || (err < 0 && errno == EINTR)) > err = 0; > waking++; > + > + if (perf_evlist__filter_pollfd(rec->evlist, POLLERR | > POLLHUP) == 0)
If the poll fds only include the ones mmapped, then mightn't it filter out ones still in use? e.g. what if you record two processes and one exits? > + done = 1; > } > > /* > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

