From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Wed, 20 Jan 2021 09:18:07 +0000 (-0800) Subject: bpo-42005: profile and cProfile catch BrokenPipeError (GH-22643) X-Git-Tag: v3.8.8rc1~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=648b72900b5039ab46b8b459f921daecb8db2a6b;p=thirdparty%2FPython%2Fcpython.git bpo-42005: profile and cProfile catch BrokenPipeError (GH-22643) (cherry picked from commit 3554fa4abecfb77ac5fcaa5ce8310eeca5683960) Co-authored-by: Zhiming Wang --- diff --git a/Lib/cProfile.py b/Lib/cProfile.py index 47aacf9e2d49..406a9b7cf11b 100755 --- a/Lib/cProfile.py +++ b/Lib/cProfile.py @@ -191,7 +191,12 @@ def main(): '__package__': None, '__cached__': None, } - runctx(code, globs, None, options.outfile, options.sort) + try: + runctx(code, globs, None, options.outfile, options.sort) + except BrokenPipeError as exc: + # Prevent "Exception ignored" during interpreter shutdown. + sys.stdout = None + sys.exit(exc.errno) else: parser.print_usage() return parser diff --git a/Lib/profile.py b/Lib/profile.py index 9df4435c5ae8..df4450dac6a1 100755 --- a/Lib/profile.py +++ b/Lib/profile.py @@ -611,7 +611,12 @@ def main(): '__package__': None, '__cached__': None, } - runctx(code, globs, None, options.outfile, options.sort) + try: + runctx(code, globs, None, options.outfile, options.sort) + except BrokenPipeError as exc: + # Prevent "Exception ignored" during interpreter shutdown. + sys.stdout = None + sys.exit(exc.errno) else: parser.print_usage() return parser diff --git a/Misc/NEWS.d/next/Library/2020-10-11-13-48-03.bpo-42005.Jq6Az-.rst b/Misc/NEWS.d/next/Library/2020-10-11-13-48-03.bpo-42005.Jq6Az-.rst new file mode 100644 index 000000000000..be4ed7f55ffd --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-10-11-13-48-03.bpo-42005.Jq6Az-.rst @@ -0,0 +1,2 @@ +Fix CLI of :mod:`cProfile` and :mod:`profile` to catch +:exc:`BrokenPipeError`.