فهرست منبع

Fix signal forwarding from borgmatic to Borg resulting in recursion traceback (#368).

Dan Helfman 4 سال پیش
والد
کامیت
1c9ae81987
2فایلهای تغییر یافته به همراه7 افزوده شده و 1 حذف شده
  1. 1 0
      NEWS
  2. 6 1
      borgmatic/signals.py

+ 1 - 0
NEWS

@@ -4,6 +4,7 @@
  * #355: Fix traceback when a database hook value is null in a configuration file.
  * #361: Merge override values when specifying the "--override" flag multiple times. The previous
    behavior was to take the value of the last "--override" flag only.
+ * #368: Fix signal forwarding from borgmatic to Borg resulting in recursion traceback.
 
 1.5.10
  * #347: Add hooks that run for the "extract" action: "before_extract" and "after_extract".

+ 6 - 1
borgmatic/signals.py

@@ -4,8 +4,13 @@ import signal
 
 def _handle_signal(signal_number, frame):  # pragma: no cover
     '''
-    Send the signal to all processes in borgmatic's process group, which includes child process.
+    Send the signal to all processes in borgmatic's process group, which includes child processes.
     '''
+    # Prevent infinite signal handler recursion. If the parent frame is this very same handler
+    # function, we know we're recursing.
+    if frame.f_back.f_code.co_name == _handle_signal.__name__:
+        return
+
     os.killpg(os.getpgrp(), signal_number)