diff --git a/platformio/debug/command.py b/platformio/debug/command.py index 278ca463..a2484769 100644 --- a/platformio/debug/command.py +++ b/platformio/debug/command.py @@ -172,11 +172,12 @@ def debug_cmd( signal.signal(signal.SIGINT, signal.SIG_IGN) loop.run_until_complete(coro) if IS_WINDOWS: + client.close() # an issue with `asyncio` executor and STIDIN, # it cannot be closed gracefully proc.force_exit() finally: - del client + client.close() loop.close() return True diff --git a/platformio/debug/process/client.py b/platformio/debug/process/client.py index 6a6f1b9e..3a017e7b 100644 --- a/platformio/debug/process/client.py +++ b/platformio/debug/process/client.py @@ -66,6 +66,14 @@ class DebugClientProcess(DebugBaseProcess): self._server_process.terminate() super(DebugClientProcess, self).process_exited() + def close(self): + self._unlock_session() + if self.working_dir and os.path.isdir(self.working_dir): + fs.rmtree(self.working_dir) + + def __del__(self): + self.close() + def _kill_previous_session(self): assert self._session_id pid = None @@ -94,8 +102,3 @@ class DebugClientProcess(DebugBaseProcess): return with ContentCache() as cc: cc.delete(self._session_id) - - def __del__(self): - self._unlock_session() - if self.working_dir and os.path.isdir(self.working_dir): - fs.rmtree(self.working_dir)