tinyhumansai/openhuman · error

service status task panicked

Error message

service status task panicked

What it means

A spawn_blocking task collecting a sub-snapshot of the app status (one of the parallel status probes in the dashboard snapshot builder) panicked or was cancelled at join. The JoinError means the probe's own error handling was bypassed; the surrounding code degrades to a partial snapshot rather than failing the whole status request.

Source

Thrown at src/openhuman/desktop/app_state/ops.rs:877

                }
                Err(_) => {
                    warn!(
                        "{LOG_PREFIX} local_ai timed out after {}s; using degraded sub-snapshot req_id={}",
                        SNAPSHOT_SUB_OP_TIMEOUT.as_secs(),
                        req_id,
                    );
                    crate::openhuman::inference::LocalAiStatus::disabled(&config_for_local_ai)
                }
            };
            (status, t.elapsed().as_millis())
        },
        async {
            let t = Instant::now();
            let status = tokio::task::spawn_blocking(move || {
                crate::openhuman::platform::service::status(&config_for_service)
            })
            .await
            .unwrap_or_else(|_| Err(anyhow::anyhow!("service status task panicked")));
            let status = match status {
                Ok(s) => s,
                Err(error) => {
                    let message = error.to_string();
                    warn!("{LOG_PREFIX} service status failed during snapshot: {message}");
                    ServiceStatus {
                        state: ServiceState::Unknown(message.clone()),
                        unit_path: None,
                        label: "OpenHuman".to_string(),
                        details: Some(message),
                    }
                }
            };
            (status, t.elapsed().as_millis())
        }
    );

    let total_ms = t0.elapsed().as_millis();

View on GitHub (pinned to 7491200858)

Solutions

  1. Check logs for the panic inside the status probe
  2. Treat the snapshot as degraded; individual sub-snapshots may show fallback values
  3. Retry the status request; one-off panics usually clear
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at src/openhuman/desktop/app_state/ops.rs:877 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/b1ca698b38468314. Report an issue: GitHub.