Ctrl+C wont exit a while True loop in the shell
Another (and simple to reproduce) issue with Ctrl+C (Bliss v1.11 and master):
SAM [0]: while True:
print(date())
The loop continue to execute indefinitely.
Executing with pdb
attached, when Ctrl+C, pdb
reports the following backtrace:
/mnt/c/Users/debionne/Dev/bliss/bliss/common/greenlet_utils/asyncio_gevent.py(166)wrap_func()
-> result = orig_func(*args, **kw)
/mnt/c/Users/debionne/Dev/bliss/bliss/shell/cli/repl.py(528)eval()
-> result = self.raw_eval(text)
/mnt/c/Users/debionne/Dev/bliss/bliss/shell/cli/repl.py(517)raw_eval()
-> return super().eval(text)
/home/debionne/miniconda3/envs/bliss_1.12x/lib/python3.9/site-packages/ptpython/repl.py(258)eval()
-> result = eval(code, self.get_globals(), self.get_locals())
<stdin>(1)<module>()->None
> /mnt/c/Users/debionne/Dev/bliss/bliss/shell/cli/repl.py(286)write()
-> def write(self, data):
resuming the execution, the loop continue to execute.
Eventually, multiple Ctr+C later, it gives:
01/09/2023 11:49:33
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/bliss/bliss/shell/cli/repl.py", line 291, in write
self.flush()
File "/bliss/bliss/shell/cli/repl.py", line 294, in flush
return self.__wrapped_output.flush()
File "/home/debionne/miniconda3/envs/bliss_1.12x/lib/python3.9/site-packages/prompt_toolkit/output/vt100.py", line 704, in flush
flush_stdout(self.stdout, data)
File "/home/debionne/miniconda3/envs/bliss_1.12x/lib/python3.9/site-packages/prompt_toolkit/output/flush_stdout.py", line 37, in flush_stdout
stdout.flush()
File "/home/debionne/miniconda3/envs/bliss_1.12x/lib/python3.9/pdb.py", line 192, in sigint_handler
self.message("\nProgram interrupted. (Use 'cont' to resume).")
File "/home/debionne/miniconda3/envs/bliss_1.12x/lib/python3.9/pdb.py", line 457, in message
print(msg, file=self.stdout)
RuntimeError: reentrant call inside <_io.BufferedWriter name='<stdout>'>