From ff3f275c84472662d103b513aefb557b8a9e8117 Mon Sep 17 00:00:00 2001 From: Eric Wild Date: Wed, 23 Sep 2026 17:51:04 +0200 Subject: [PATCH] tools: print tracebacks to the same stream as delimiters Error output is currently a garbled mess, delimiters are printed with poutput() or print(), traceback with traceback.print_exc() which goes to stderr. Reading stdout alone omits the report but not -->8-- lines. Reading both streams makes the traceback appear where the two buffers just happen to interleave, stderr is usually unbuffered but stdout is not, so I get the error trace, APDU trace, then empty -->8-- lines. Fix this by aligning the printing funcs. Change-Id: I2ed37dfe241d014e4a26894cddbc9b21be1fd0c2 --- pySim-prog.py | 2 +- pySim-shell.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pySim-prog.py b/pySim-prog.py index 6111fc12..0a3e888a 100755 --- a/pySim-prog.py +++ b/pySim-prog.py @@ -816,7 +816,7 @@ if __name__ == '__main__': print("") print("Card programming failed with an exception:") print("---------------------8<---------------------") - traceback.print_exc() + print(traceback.format_exc().rstrip()) print("---------------------8<---------------------") print("") rc = -1 diff --git a/pySim-shell.py b/pySim-shell.py index 2d9d3567..3a0dedd4 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -351,7 +351,7 @@ Online manual available at https://downloads.osmocom.org/docs/pysim/master/html/ self.poutput("") self.poutput("Card initialization (%s) failed with an exception:" % str(self.sl)) self.poutput("---------------------8<---------------------") - traceback.print_exc() + self.poutput(traceback.format_exc().rstrip()) self.poutput("---------------------8<---------------------") self.poutput("") return -1 @@ -465,7 +465,7 @@ Online manual available at https://downloads.osmocom.org/docs/pysim/master/html/ self.poutput("") self.poutput("Card handling (%s) failed with an exception:" % str(self.sl)) self.poutput("---------------------8<---------------------") - traceback.print_exc() + self.poutput(traceback.format_exc().rstrip()) self.poutput("---------------------8<---------------------") self.poutput("") fail_count = fail_count + 1 @@ -1176,7 +1176,7 @@ if __name__ == '__main__': startup_errors = True print("Card initialization (%s) failed with an exception:" % str(sl)) print("---------------------8<---------------------") - traceback.print_exc() + print(traceback.format_exc().rstrip()) print("---------------------8<---------------------") if not opts.noprompt: print("(you may still try to recover from this manually by using the 'equip' command.)")