BigPizzaV3/CodexPlusPlus · error · anyhow::Error
Remote Control recovery state lock poisoned
Error message
Remote Control recovery state lock poisoned
What it means
Raised in load_pending_remote_control_recoveries when the process-global Mutex guarding the Remote Control recovery state file is poisoned — another thread panicked while holding the lock — so pending recovery records cannot be read safely.
Source
Thrown at crates/codex-plus-core/src/remote_control_recovery.rs:53
}
pub fn config_generation(profile: &RelayProfile, target_provider: &str) -> String {
let mut digest = Sha256::new();
digest.update(profile.id.trim().as_bytes());
digest.update([0]);
digest.update(profile.config_contents.as_bytes());
digest.update([0]);
digest.update(target_provider.trim().as_bytes());
format!("{:x}", digest.finalize())
}
pub fn load_pending_remote_control_recoveries(
path: Option<&Path>,
) -> anyhow::Result<Vec<PendingRemoteControlRecovery>> {
let path = pending_path(path);
let _guard = state_lock()
.lock()
.map_err(|_| anyhow::anyhow!("Remote Control recovery state lock poisoned"))?;
Ok(load_state(&path)?.requests)
}
pub fn enqueue_pending_remote_control_recovery(
path: Option<&Path>,
request: PendingRemoteControlRecovery,
) -> anyhow::Result<()> {
validate_request(&request)?;
let path = pending_path(path);
let _guard = state_lock()
.lock()
.map_err(|_| anyhow::anyhow!("Remote Control recovery state lock poisoned"))?;
let mut state = load_state(&path)?;
// The first observed profile/provider snapshot is authoritative. Retries for the same
// thread must not overwrite it after the user switches relay profiles.
if state
.requests
.iter()View on GitHub (pinned to fb3ebd9a82)
Solutions
- Restart the Codex++ process to reset the poisoned lock
- Investigate the earlier panic that poisoned the state lock
- Retry the load after other remote-control operations settle
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at crates/codex-plus-core/src/remote_control_recovery.rs:53 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BigPizzaV3/CodexPlusPlus@fb3ebd9a82 (2026-08-17).
Data as JSON: /api/errors/7ea05fe0be3b14a1.
Report an issue: GitHub.