{"record":{"id":"a0d602fa7b5028a1","repo":"exo-explore/exo","slug":"process-has-already-been-started","errorCode":null,"errorMessage":"process has already been started","messagePattern":"process has already been started","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/exo/utils/async_process.py","lineNumber":70,"sourceCode":"        self._name = name\n        self._args = args\n        self._kwargs = kwargs\n        self._daemon = daemon\n\n        # lifecycle state\n        self._process: BaseProcess | None = None\n        self._pid: int | None = None\n        self._stdout_tx, self._stdout_rx = channel[bytes]()\n        self._stderr_tx, self._stderr_rx = channel[bytes]()\n        self._started = Event()\n        self._done = Event()\n        self._run_cancel_scope: CancelScope | None = None\n        self._start_error: BaseException | None = None\n        self._exitcode: int | None = None\n\n    async def run(self, *, task_status: TaskStatus[None] = TASK_STATUS_IGNORED) -> None:\n        if self._run_cancel_scope is not None or self._done.is_set():\n            raise RuntimeError(\"process has already been started\")\n\n        stdout_read_fd: int | None = None\n        stdout_write_fd: int | None = None\n        stderr_read_fd: int | None = None\n        stderr_write_fd: int | None = None\n\n        def cleanup_stdio_fd() -> None:\n            nonlocal stdout_read_fd, stdout_write_fd, stderr_read_fd, stderr_write_fd\n            stdout_read_fd = _close_fd(stdout_read_fd)\n            stdout_write_fd = _close_fd(stdout_write_fd)\n            stderr_read_fd = _close_fd(stderr_read_fd)\n            stderr_write_fd = _close_fd(stderr_write_fd)\n\n        try:\n            with CancelScope() as run_cancel_scope:\n                self._run_cancel_scope = run_cancel_scope\n                stdout_read_fd, stdout_write_fd = os.pipe()\n                stderr_read_fd, stderr_write_fd = os.pipe()","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/exo-explore/exo/blob/21a54c5ea0230a3bec1e1a786d200126c7e34ec6/src/exo/utils/async_process.py#L52-L88","documentation":"Error \"process has already been started\" thrown in exo-explore/exo.","triggerScenarios":"Thrown at src/exo/utils/async_process.py:70 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"21a54c5ea0230a3bec1e1a786d200126c7e34ec6","analyzedAt":"2026-08-26T00:02:16.033Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}