diff --git a/gprofiler/utils/perf_process.py b/gprofiler/utils/perf_process.py index ba44a911c..b2de5bb50 100644 --- a/gprofiler/utils/perf_process.py +++ b/gprofiler/utils/perf_process.py @@ -8,6 +8,7 @@ from psutil import Process +from gprofiler.exceptions import CalledProcessError from gprofiler.log import get_logger_adapter from gprofiler.utils import ( reap_process, @@ -189,11 +190,17 @@ def wait_and_script(self) -> str: perf_data.unlink() perf_data = inject_data - perf_script_proc = run_process( - [perf_path(), "script", "-F", "+pid,+symline", "-i", str(perf_data)], - suppress_log=True, - ) - return perf_script_proc.stdout.decode("utf8") + try: + perf_script_proc = run_process( + [perf_path(), "script", "-F", "+pid,+symline", "-i", str(perf_data)], + suppress_log=True, + ) + return perf_script_proc.stdout.decode("utf8") + except CalledProcessError as e: + # ignore addr2line errors + if isinstance(e.stderr, str) and e.stderr.startswith("addr2line"): + return e.stdout.decode("utf8") if isinstance(e.stdout, bytes) else str(e.stdout) + raise finally: perf_data.unlink() if self._inject_jit: diff --git a/tests/test.sh b/tests/test.sh index 14065ef5a..18f547aba 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -48,4 +48,4 @@ fi python3 -m pip install -q --upgrade setuptools pip python3 -m pip install -r ./requirements.txt -r ./exe-requirements.txt -r ./dev-requirements.txt # TODO: python3 -m pip install . -sudo env "PATH=$PATH" python3 -m pytest -v tests/ "$@" +sudo -E env "PATH=$PATH" python3 -m pytest -v tests/ "$@"