From 9c58a7bbd6def445ba1d1faaf7a3c2960ba2819e Mon Sep 17 00:00:00 2001 From: Matej Habrnal Date: Tue, 8 Mar 2016 16:45:36 +0100 Subject: [PATCH] a-a-install-debuginfo: fix BrokenPipe error While debug info is downloading and stop button is pressed the BrokenPipe error appears. If the stop button is pressed, gui wizard sends SIGTERM to all processes with the same group ID so abrt-action-install-debuginfo got SIGTERM as well. It has its own SIGTERM handler which calls clean_up() function and it takes a while before the tool is terminated. abrt-action-install-debuginfo tries to write some messages to the closed socket during the clean_up process and it raises a BrokenPipe exception. We must ensure that no message will be printed after SIGTERM is recieved. Related to: #1255259 Signed-off-by: Matej Habrnal --- src/plugins/abrt-action-install-debuginfo.in | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/abrt-action-install-debuginfo.in b/src/plugins/abrt-action-install-debuginfo.in index bb72695..f9eb596 100644 --- a/src/plugins/abrt-action-install-debuginfo.in +++ b/src/plugins/abrt-action-install-debuginfo.in @@ -44,7 +44,7 @@ def init_gettext(): gettext.textdomain(GETTEXT_PROGNAME) def sigterm_handler(signum, frame): - clean_up(TMPDIR) + clean_up(TMPDIR, silent=True) exit(RETURN_OK) def sigint_handler(signum, frame): @@ -241,6 +241,9 @@ if __name__ == "__main__": try: result = downloader.download(missing, download_exact_files=exact_fls) except Exception as ex: + if ex.errno == errno.EPIPE: + clean_up(TMPDIR, silent=True) + exit(RETURN_FAILURE) error_msg_and_die("Can't download debuginfos: %s", ex) if exact_fls: -- 2.5.5