Re: [PATCH] perf python: Do not force closing original perf descriptor in evlist.get_pollfd
From: Arnaldo Carvalho de Melo
Date: Thu Dec 27 2018 - 08:01:06 EST
Em Thu, Dec 27, 2018 at 09:06:38AM +0100, Jiri Olsa escreveu:
> On Wed, Dec 26, 2018 at 12:21:21PM +0100, Jiri Olsa wrote:
> > OndÅej reported that when compiled with python3, the python
> > extension regress in evlist.get_pollfd function behaviour.
> >
> > The evlist.get_pollfd creates file objects from evlist's fds
> > and returns them in the list. The python3 version also sets
> > them to 'close the original descriptor' when the object die
> > (is closed), by passing True via 'closefd' arg in PyFile_FromFd
> > call.
> >
> > The python's closefd doc says:
> > If closefd is False, the underlying file descriptor will be kept open
> > when the file is closed.
> >
> > That's why following line in python3 closes all evlist fds:
> > evlist.get_pollfd()
> >
> > the returned list is immediately destroyed and that takes
> > down the original events fds.
> >
> > Passing closefd as False to PyFile_FromFd to fix this.
> >
> > Reported-by: OndÅej LysonÄk <olysonek@xxxxxxxxxx>
> > Link: http://lkml.kernel.org/n/tip-ru9hmsaliew8p01kr0050mvg@xxxxxxxxxxxxxx
> > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
>
> oops, forgot to add.. and cc-ing Jaroslav Åkarvada
>
> Fixes: 66dfdff03d19 ("perf tools: Add Python 3 support")
Thanks, added the Fixes: and Cc: Jaroslav,
- Arnaldo