summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/pym/portage.py b/pym/portage.py
index 06dcd2f83..2942bb257 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -505,7 +505,16 @@ def elog_process(cpv, mysettings):
# TODO: implement a common portage module loader
logmodule = __import__("elog_modules.mod_"+s)
m = getattr(logmodule, "mod_"+s)
+ def timeout_handler(signum, frame):
+ raise portage_exception.PortageException(
+ "Timeout in elog_process for system '%s'" % s)
+ import signal
+ signal.signal(signal.SIGALRM, timeout_handler)
+ # Timeout after one minute (in case something like the mail
+ # module gets hung).
+ signal.alarm(60)
m.process(mysettings, cpv, mylogentries, fulllog)
+ signal.alarm(0)
if hasattr(m, "finalize") and not m.finalize in _elog_atexit_handlers:
_elog_atexit_handlers.append(m.finalize)
atexit_register(m.finalize, mysettings)