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