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