From 5bfa4175465b2bdf220220c9110e490e8cb9c415 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Wed, 25 Oct 2023 12:06:27 +0200 Subject: [PATCH] fix rc and msg if arg parsing throws an exception, fixes #7885 get_args() exception handling before this fix only dealt with subclasses of "Error", but we have to expect other exceptions there, too. In any case, if we have some fatal exception here, we must terminate with rc 2. ArgumentTypeError: emit a short error message - usually this is a user error, invoking borg in a wrong way. Other exceptions: full info and traceback. --- src/borg/archiver.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/borg/archiver.py b/src/borg/archiver.py index 3cdfb0d0b..392bd1dd3 100644 --- a/src/borg/archiver.py +++ b/src/borg/archiver.py @@ -5325,6 +5325,17 @@ def main(): # pragma: no cover if tb_log_level == logging.ERROR: print(tb, file=sys.stderr) sys.exit(e.exit_code) + except argparse.ArgumentTypeError as e: + # we might not have logging setup yet, so get out quickly + print(str(e), file=sys.stderr) + sys.exit(EXIT_ERROR) + except Exception: + msg = 'Local Exception' + tb = f'{traceback.format_exc()}\n{sysinfo()}' + # we might not have logging setup yet, so get out quickly + print(msg, file=sys.stderr) + print(tb, file=sys.stderr) + sys.exit(EXIT_ERROR) try: with sig_int: exit_code = archiver.run(args)