Skip to content

FFprobe monitor#

The ffprobe monitor watches for stuck ffprobe processes spawned by Sonarr or Radarr and nudges them back to life. This prevents long-running media scans from hanging indefinitely.


When it runs#

The monitor activates only when at least one Sonarr or Radarr instance is enabled. If neither service is running, the worker stays idle.


How it works#

  1. Collects running Sonarr/Radarr process IDs.
  2. Finds descendant ffprobe processes.
  3. Detects processes stuck in an uninterruptible sleep state (D) for longer than a configured age.
  4. Re-runs ffprobe on the same input file to release the stuck probe.

Configuration in dumb_config.json#

"dumb": {
  "ffprobe_monitor": {
    "enabled": true,
    "interval_sec": 10,
    "min_process_age_sec": 30,
    "min_poke_interval_sec": 60,
    "poke_timeout_sec": 30,
    "max_pokes_per_cycle": 3,
    "cache_ttl_sec": 3600,
    "ffprobe_path": "ffprobe"
  }
}

Settings reference#

Setting Description
enabled Turns the monitor on or off.
interval_sec Poll interval between checks.
min_process_age_sec Minimum age for an ffprobe process before it is considered stuck.
min_poke_interval_sec Minimum time between pokes for the same file path.
poke_timeout_sec Timeout for the probe used to nudge the stuck process.
max_pokes_per_cycle Maximum number of ffprobe pokes per polling cycle.
cache_ttl_sec How long to cache recently poked file paths.
ffprobe_path Path or command for ffprobe.

Operational notes#

Scope

The monitor only targets ffprobe processes spawned under Sonarr/Radarr. It does not touch other ffprobe instances on the host.

Custom ffprobe binary

If your media stack uses a bundled ffprobe, set ffprobe_path to the full binary path.


Troubleshooting#

  • If ffprobe checks never trigger, verify Sonarr/Radarr instances are enabled and visible to the DUMB process handler.
  • If the monitor logs repeated timeouts, lower max_pokes_per_cycle or increase poke_timeout_sec.