| 
														
															@@ -564,6 +564,29 @@ def sig_trace_handler(sig_no, stack):  # pragma: no cover 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     faulthandler.dump_traceback() 
														 | 
														
														 | 
														
															     faulthandler.dump_traceback() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+def format_tb(exc): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    qualname = type(exc).__qualname__ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    remote = isinstance(exc, RemoteRepository.RPCError) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if remote: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        prefix = "Borg server: " 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        trace_back = "\n".join(prefix + l for l in exc.exception_full.splitlines()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        sys_info = "\n".join(prefix + l for l in exc.sysinfo.splitlines()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    else: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        trace_back = traceback.format_exc() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        sys_info = sysinfo() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    result = f""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+Error: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{qualname}: {exc} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+If reporting bugs, please include the following: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{trace_back} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{sys_info} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return result 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 def main():  # pragma: no cover 
														 | 
														
														 | 
														
															 def main():  # pragma: no cover 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # Make sure stdout and stderr have errors='replace' to avoid unicode 
														 | 
														
														 | 
														
															     # Make sure stdout and stderr have errors='replace' to avoid unicode 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     # issues when print()-ing unicode file names 
														 | 
														
														 | 
														
															     # issues when print()-ing unicode file names 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -594,12 +617,11 @@ def main():  # pragma: no cover 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         try: 
														 | 
														
														 | 
														
															         try: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             args = archiver.get_args(sys.argv, os.environ.get("SSH_ORIGINAL_COMMAND")) 
														 | 
														
														 | 
														
															             args = archiver.get_args(sys.argv, os.environ.get("SSH_ORIGINAL_COMMAND")) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         except Error as e: 
														 | 
														
														 | 
														
															         except Error as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            msg = e.get_message() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb_log_level = logging.ERROR if e.traceback else logging.DEBUG 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb = f"{traceback.format_exc()}\n{sysinfo()}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             # we might not have logging setup yet, so get out quickly 
														 | 
														
														 | 
														
															             # we might not have logging setup yet, so get out quickly 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            msg = e.get_message() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             print(msg, file=sys.stderr) 
														 | 
														
														 | 
														
															             print(msg, file=sys.stderr) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if tb_log_level == logging.ERROR: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if e.traceback: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                tb = format_tb(e) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 print(tb, file=sys.stderr) 
														 | 
														
														 | 
														
															                 print(tb, file=sys.stderr) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             sys.exit(e.exit_code) 
														 | 
														
														 | 
														
															             sys.exit(e.exit_code) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         try: 
														 | 
														
														 | 
														
															         try: 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -609,39 +631,37 @@ def main():  # pragma: no cover 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msg = e.get_message() 
														 | 
														
														 | 
														
															             msg = e.get_message() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msgid = type(e).__qualname__ 
														 | 
														
														 | 
														
															             msgid = type(e).__qualname__ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             tb_log_level = logging.ERROR if e.traceback else logging.DEBUG 
														 | 
														
														 | 
														
															             tb_log_level = logging.ERROR if e.traceback else logging.DEBUG 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb = f"{traceback.format_exc()}\n{sysinfo()}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tb = format_tb(e) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             exit_code = e.exit_code 
														 | 
														
														 | 
														
															             exit_code = e.exit_code 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         except RemoteRepository.RPCError as e: 
														 | 
														
														 | 
														
															         except RemoteRepository.RPCError as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             important = e.exception_class not in ("LockTimeout",) and e.traceback 
														 | 
														
														 | 
														
															             important = e.exception_class not in ("LockTimeout",) and e.traceback 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            msg = e.exception_full if important else e.get_message() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msgid = e.exception_class 
														 | 
														
														 | 
														
															             msgid = e.exception_class 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             tb_log_level = logging.ERROR if important else logging.DEBUG 
														 | 
														
														 | 
														
															             tb_log_level = logging.ERROR if important else logging.DEBUG 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if important: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                msg = e.exception_full 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            else: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                msg = e.get_message() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb = "\n".join("Borg server: " + l for l in e.sysinfo.splitlines()) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb += "\n" + sysinfo() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tb = format_tb(e) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             exit_code = EXIT_ERROR 
														 | 
														
														 | 
														
															             exit_code = EXIT_ERROR 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        except Exception: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        except Exception as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msg = "Local Exception" 
														 | 
														
														 | 
														
															             msg = "Local Exception" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msgid = "Exception" 
														 | 
														
														 | 
														
															             msgid = "Exception" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             tb_log_level = logging.ERROR 
														 | 
														
														 | 
														
															             tb_log_level = logging.ERROR 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb = f"{traceback.format_exc()}\n{sysinfo()}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tb = format_tb(e) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             exit_code = EXIT_ERROR 
														 | 
														
														 | 
														
															             exit_code = EXIT_ERROR 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        except KeyboardInterrupt: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        except KeyboardInterrupt as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msg = "Keyboard interrupt" 
														 | 
														
														 | 
														
															             msg = "Keyboard interrupt" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             tb_log_level = logging.DEBUG 
														 | 
														
														 | 
														
															             tb_log_level = logging.DEBUG 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb = f"{traceback.format_exc()}\n{sysinfo()}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tb = format_tb(e) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             exit_code = EXIT_SIGNAL_BASE + 2 
														 | 
														
														 | 
														
															             exit_code = EXIT_SIGNAL_BASE + 2 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        except SigTerm: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        except SigTerm as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msg = "Received SIGTERM" 
														 | 
														
														 | 
														
															             msg = "Received SIGTERM" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msgid = "Signal.SIGTERM" 
														 | 
														
														 | 
														
															             msgid = "Signal.SIGTERM" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             tb_log_level = logging.DEBUG 
														 | 
														
														 | 
														
															             tb_log_level = logging.DEBUG 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            tb = f"{traceback.format_exc()}\n{sysinfo()}" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tb = format_tb(e) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             exit_code = EXIT_SIGNAL_BASE + 15 
														 | 
														
														 | 
														
															             exit_code = EXIT_SIGNAL_BASE + 15 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        except SigHup: 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        except SigHup as e: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msg = "Received SIGHUP." 
														 | 
														
														 | 
														
															             msg = "Received SIGHUP." 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             msgid = "Signal.SIGHUP" 
														 | 
														
														 | 
														
															             msgid = "Signal.SIGHUP" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tb_log_level = logging.DEBUG 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            tb = format_tb(e) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             exit_code = EXIT_SIGNAL_BASE + 1 
														 | 
														
														 | 
														
															             exit_code = EXIT_SIGNAL_BASE + 1 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if msg: 
														 | 
														
														 | 
														
															         if msg: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             logger.error(msg, msgid=msgid) 
														 | 
														
														 | 
														
															             logger.error(msg, msgid=msgid) 
														 |