{"record":{"id":"2b78b87d3292836d","repo":"mvanhorn/last30days-skill","slug":"command-cmd-0-timed-out-after-timeout-s","errorCode":null,"errorMessage":"Command {cmd[0]} timed out after {timeout}s","messagePattern":"Command (.+?) timed out after (.+?)s","errorType":"exception","errorClass":"SubprocTimeout","httpStatus":null,"severity":"error","filePath":"skills/last30days/scripts/lib/subproc.py","lineNumber":110,"sourceCode":"        except subprocess.TimeoutExpired:\n            # Child ignored SIGTERM (or our killpg lost the race); escalate.\n            # Guard killpg/getpgid the same way the SIGTERM path above does:\n            # they are POSIX-only and raise AttributeError on Windows. The\n            # primary path was hardened in #552; this mirrors that guard on the\n            # escalation path (added later in #433) so the same crash can't\n            # re-surface here (#588).\n            try:\n                if hasattr(os, \"killpg\") and hasattr(os, \"getpgid\"):\n                    os.killpg(os.getpgid(proc.pid), signal.SIGKILL)\n                else:\n                    proc.kill()\n            except (ProcessLookupError, PermissionError, OSError, AttributeError):\n                proc.kill()\n            try:\n                proc.wait(timeout=5)\n            except subprocess.TimeoutExpired:\n                pass  # process unkillable (e.g. D-state); leave as zombie\n        raise SubprocTimeout(f\"Command {cmd[0]} timed out after {timeout}s\")\n\n    return SubprocResult(\n        returncode=proc.returncode,\n        stdout=stdout or \"\",\n        stderr=stderr or \"\",\n    )\n","sourceCodeStart":92,"sourceCodeEnd":117,"githubUrl":"https://github.com/mvanhorn/last30days-skill/blob/c7460f6114449ddfe6ea3fc2f23c3d910c0e740c/skills/last30days/scripts/lib/subproc.py#L92-L117","documentation":"Error \"Command {cmd[0]} timed out after {timeout}s\" thrown in mvanhorn/last30days-skill.","triggerScenarios":"Fires when an external command run via lib/subproc.py (e.g. yt-dlp or digg-pp-cli) does not finish within the configured timeout budget. Common when the network is slow, the remote service hangs, or the timeout is set too low for a large fetch.","commonSituations":"See trigger scenarios.","solutions":["Increase the timeout for the long-running command (pass a larger timeout value to the subproc helper) or reduce the work the command does in one run.","Check whether the child process is hung: run the same command manually with the same arguments and time it; fix the underlying slowness or deadlock.","Ensure the child command can actually receive output/stdin in this environment; a subprocess blocked writing to a full pipe can appear to time out."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c7460f6114449ddfe6ea3fc2f23c3d910c0e740c","analyzedAt":"2026-08-15T03:34:49.540Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}