mvanhorn/last30days-skill · error · SubprocTimeout

Command {cmd[0]} timed out after {timeout}s

Error message

Command {cmd[0]} timed out after {timeout}s

What it means

Error "Command {cmd[0]} timed out after {timeout}s" thrown in mvanhorn/last30days-skill.

Source

Thrown at skills/last30days/scripts/lib/subproc.py:110

        except subprocess.TimeoutExpired:
            # Child ignored SIGTERM (or our killpg lost the race); escalate.
            # Guard killpg/getpgid the same way the SIGTERM path above does:
            # they are POSIX-only and raise AttributeError on Windows. The
            # primary path was hardened in #552; this mirrors that guard on the
            # escalation path (added later in #433) so the same crash can't
            # re-surface here (#588).
            try:
                if hasattr(os, "killpg") and hasattr(os, "getpgid"):
                    os.killpg(os.getpgid(proc.pid), signal.SIGKILL)
                else:
                    proc.kill()
            except (ProcessLookupError, PermissionError, OSError, AttributeError):
                proc.kill()
            try:
                proc.wait(timeout=5)
            except subprocess.TimeoutExpired:
                pass  # process unkillable (e.g. D-state); leave as zombie
        raise SubprocTimeout(f"Command {cmd[0]} timed out after {timeout}s")

    return SubprocResult(
        returncode=proc.returncode,
        stdout=stdout or "",
        stderr=stderr or "",
    )

View on GitHub (pinned to c7460f6114)

Solutions

  1. 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.
  2. 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.
  3. 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.

When it happens

Trigger: 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.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of mvanhorn/last30days-skill@c7460f6114 (2026-08-15). Data as JSON: /api/errors/2b78b87d3292836d. Report an issue: GitHub.