* Re: [PATCH] perf python: Do not force closing original perf descriptor in evlist.get_pollfd
2018-12-26 11:21 [PATCH] perf python: Do not force closing original perf descriptor in evlist.get_pollfd Jiri Olsa
@ 2018-12-26 19:47 ` Arnaldo Carvalho de Melo
2018-12-27 8:06 ` Jiri Olsa
2019-01-03 13:13 ` [tip:perf/urgent] perf python: Do not force closing original perf descriptor in evlist.get_pollfd() tip-bot for Jiri Olsa
2 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-12-26 19:47 UTC (permalink / raw)
To: Jiri Olsa
Cc: lkml, Ingo Molnar, Namhyung Kim, Alexander Shishkin,
Peter Zijlstra, Ondřej Lysoněk
Em Wed, Dec 26, 2018 at 12:21:21PM +0100, Jiri Olsa escreveu:
> 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.
Applied.
- Arnaldo
> Reported-by: Ondřej Lysoněk <olysonek@redhat.com>
> Link: http://lkml.kernel.org/n/tip-ru9hmsaliew8p01kr0050mvg@git.kernel.org
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
> tools/perf/util/python.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
> index 47628e85c5eb..dda0ac978b1e 100644
> --- a/tools/perf/util/python.c
> +++ b/tools/perf/util/python.c
> @@ -939,7 +939,8 @@ static PyObject *pyrf_evlist__get_pollfd(struct pyrf_evlist *pevlist,
>
> file = PyFile_FromFile(fp, "perf", "r", NULL);
> #else
> - file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1, NULL, NULL, NULL, 1);
> + file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1,
> + NULL, NULL, NULL, 0);
> #endif
> if (file == NULL)
> goto free_list;
> --
> 2.17.2
--
- Arnaldo
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] perf python: Do not force closing original perf descriptor in evlist.get_pollfd
2018-12-26 11:21 [PATCH] perf python: Do not force closing original perf descriptor in evlist.get_pollfd Jiri Olsa
2018-12-26 19:47 ` Arnaldo Carvalho de Melo
@ 2018-12-27 8:06 ` Jiri Olsa
2018-12-27 12:54 ` Arnaldo Carvalho de Melo
2019-01-03 13:13 ` [tip:perf/urgent] perf python: Do not force closing original perf descriptor in evlist.get_pollfd() tip-bot for Jiri Olsa
2 siblings, 1 reply; 5+ messages in thread
From: Jiri Olsa @ 2018-12-27 8:06 UTC (permalink / raw)
To: Jiri Olsa
Cc: Arnaldo Carvalho de Melo, lkml, Ingo Molnar, Namhyung Kim,
Alexander Shishkin, Peter Zijlstra, Ondřej Lysoněk,
Jaroslav Škarvada
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@redhat.com>
> Link: http://lkml.kernel.org/n/tip-ru9hmsaliew8p01kr0050mvg@git.kernel.org
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
oops, forgot to add.. and cc-ing Jaroslav Škarvada
Fixes: 66dfdff03d19 ("perf tools: Add Python 3 support")
jirka
> ---
> tools/perf/util/python.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
> index 47628e85c5eb..dda0ac978b1e 100644
> --- a/tools/perf/util/python.c
> +++ b/tools/perf/util/python.c
> @@ -939,7 +939,8 @@ static PyObject *pyrf_evlist__get_pollfd(struct pyrf_evlist *pevlist,
>
> file = PyFile_FromFile(fp, "perf", "r", NULL);
> #else
> - file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1, NULL, NULL, NULL, 1);
> + file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1,
> + NULL, NULL, NULL, 0);
> #endif
> if (file == NULL)
> goto free_list;
> --
> 2.17.2
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] perf python: Do not force closing original perf descriptor in evlist.get_pollfd
2018-12-27 8:06 ` Jiri Olsa
@ 2018-12-27 12:54 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2018-12-27 12:54 UTC (permalink / raw)
To: Jiri Olsa
Cc: Jiri Olsa, lkml, Ingo Molnar, Namhyung Kim, Alexander Shishkin,
Peter Zijlstra, Ondřej Lysoněk, Jaroslav Škarvada
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@redhat.com>
> > Link: http://lkml.kernel.org/n/tip-ru9hmsaliew8p01kr0050mvg@git.kernel.org
> > Signed-off-by: Jiri Olsa <jolsa@kernel.org>
>
> 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
^ permalink raw reply [flat|nested] 5+ messages in thread
* [tip:perf/urgent] perf python: Do not force closing original perf descriptor in evlist.get_pollfd()
2018-12-26 11:21 [PATCH] perf python: Do not force closing original perf descriptor in evlist.get_pollfd Jiri Olsa
2018-12-26 19:47 ` Arnaldo Carvalho de Melo
2018-12-27 8:06 ` Jiri Olsa
@ 2019-01-03 13:13 ` tip-bot for Jiri Olsa
2 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Jiri Olsa @ 2019-01-03 13:13 UTC (permalink / raw)
To: linux-tip-commits
Cc: alexander.shishkin, olysonek, jskarvad, peterz, namhyung, acme,
tglx, jolsa, hpa, mingo, linux-kernel
Commit-ID: a389aece97938966616ce0336466b98b0351ef10
Gitweb: https://git.kernel.org/tip/a389aece97938966616ce0336466b98b0351ef10
Author: Jiri Olsa <jolsa@kernel.org>
AuthorDate: Wed, 26 Dec 2018 12:21:21 +0100
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 28 Dec 2018 16:33:02 -0300
perf python: Do not force closing original perf descriptor in evlist.get_pollfd()
Ondřej reported that when compiled with python3, the python extension
regresses in evlist.get_pollfd function behaviour.
The evlist.get_pollfd function creates file objects from evlist's fds
and returns them in a list. The python3 version also sets them to 'close
the original descriptor' when the object dies (is closed), by passing
True via the 'closefd' arg in the 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 the 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@redhat.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jaroslav Škarvada <jskarvad@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Fixes: 66dfdff03d19 ("perf tools: Add Python 3 support")
Link: http://lkml.kernel.org/r/20181226112121.5285-1-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/python.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
index 47628e85c5eb..dda0ac978b1e 100644
--- a/tools/perf/util/python.c
+++ b/tools/perf/util/python.c
@@ -939,7 +939,8 @@ static PyObject *pyrf_evlist__get_pollfd(struct pyrf_evlist *pevlist,
file = PyFile_FromFile(fp, "perf", "r", NULL);
#else
- file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1, NULL, NULL, NULL, 1);
+ file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1,
+ NULL, NULL, NULL, 0);
#endif
if (file == NULL)
goto free_list;
^ permalink raw reply related [flat|nested] 5+ messages in thread