{"record":{"id":"6092e398764980b3","repo":"BigPizzaV3/CodexPlusPlus","slug":"error-6092e3","errorCode":null,"errorMessage":"微信连接运行锁已损坏","messagePattern":"微信连接运行锁已损坏","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"apps/codex-plus-manager/src-tauri/src/commands.rs","lineNumber":1190,"sourceCode":"    let config = codex_plus_core::connect::WeixinConnectConfig {\n        base_url: settings.weixin_connect_base_url,\n        token: settings.weixin_connect_token,\n        account_id: settings.weixin_connect_account_id,\n        allow_from: settings.weixin_connect_allow_from,\n        route_tag: settings.weixin_connect_route_tag,\n        work_dir: settings.weixin_connect_work_dir,\n        model: settings.weixin_connect_model,\n        sandbox: settings.weixin_connect_sandbox,\n        codex_path: settings.weixin_connect_codex_path,\n    }\n    .normalized();\n    if config.token.is_empty() {\n        anyhow::bail!(\"微信连接 token 为空\");\n    }\n    let stop = Arc::new(AtomicBool::new(false));\n    let mut runtime = weixin_runtime()\n        .lock()\n        .map_err(|_| anyhow::anyhow!(\"微信连接运行锁已损坏\"))?;\n    if runtime.is_some() {\n        anyhow::bail!(\"微信连接已在运行或正在停止\");\n    }\n    *runtime = Some(WeixinRuntime {\n        stop: Arc::clone(&stop),\n    });\n    drop(runtime);\n    let status = weixin_status();\n    if let Ok(mut current) = status.lock() {\n        current.state = \"starting\".to_string();\n        current.message = \"正在启动微信连接...\".to_string();\n        current.account_id = config.account_id.clone();\n        current.has_token = true;\n    }\n    let task_status = Arc::clone(&status);\n    let task_stop = Arc::clone(&stop);\n    tauri::async_runtime::spawn(async move {\n        if let Err(error) = codex_plus_core::connect::run_weixin_connect(","sourceCodeStart":1172,"sourceCodeEnd":1208,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/apps/codex-plus-manager/src-tauri/src/commands.rs#L1172-L1208","documentation":"Thrown in spawn_weixin_connect after the token check when acquiring/validating the WeChat connect runtime lock fails because its persisted lock state is unreadable or corrupt (e.g. half-written flag from a crash). The offending input is the on-disk run-lock for the WeChat connect feature; the code treats a damaged lock as fatal for startup instead of guessing whether a previous instance is alive.","triggerScenarios":"Thrown at apps/codex-plus-manager/src-tauri/src/commands.rs:1190 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["查看此前 panic 的日志定位毒化根因","重启管理器应用恢复锁状态","改用 into_inner() 容忍毒化锁或加入锁恢复机制","排查持锁代码中的 unwrap 等可 panic 点"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f2074595a281bc057525c748175c8eb9805b0673","analyzedAt":"2026-08-23T12:52:24.489Z","contentChangedAt":"2026-08-23T12:52:24.489Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}