{"record":{"id":"1f66a202d7117123","repo":"cjpais/Handy","slug":"failed-to-register-transcription-signal-handlers","errorCode":null,"errorMessage":"failed to register transcription signal handlers","messagePattern":"failed to register transcription signal handlers","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src-tauri/src/signal_handle.rs","lineNumber":38,"sourceCode":"        c.send_input(binding_id, source, true, false);\n    } else {\n        warn!(\"TranscriptionCoordinator not initialized\");\n    }\n}\n\n/// Listen for Unix signals that remotely toggle transcription.\n///\n/// SIGUSR2 toggles plain transcription on all Unix platforms. SIGUSR1\n/// (transcription with post-processing) is only handled on macOS: on Linux,\n/// WebKitGTK's JavaScriptCore garbage collector sends SIGUSR1 to its own\n/// threads to suspend them, so handling it caused phantom recordings on every\n/// GC cycle (#1660). Linux users should use `handy --toggle-post-process`\n/// instead.\n#[cfg(unix)]\npub fn setup_signal_handler(app_handle: AppHandle) {\n    #[cfg(target_os = \"macos\")]\n    let mut signals =\n        Signals::new([SIGUSR1, SIGUSR2]).expect(\"failed to register transcription signal handlers\");\n    #[cfg(not(target_os = \"macos\"))]\n    let mut signals =\n        Signals::new([SIGUSR2]).expect(\"failed to register transcription signal handlers\");\n    #[cfg(target_os = \"macos\")]\n    debug!(\"Signal handlers registered (SIGUSR1, SIGUSR2)\");\n    #[cfg(not(target_os = \"macos\"))]\n    debug!(\"Signal handler registered (SIGUSR2; SIGUSR1 is left to WebKitGTK)\");\n    thread::spawn(move || {\n        for sig in signals.forever() {\n            let (binding_id, signal_name) = match sig {\n                #[cfg(target_os = \"macos\")]\n                SIGUSR1 => (\"transcribe_with_post_process\", \"SIGUSR1\"),\n                SIGUSR2 => (\"transcribe\", \"SIGUSR2\"),\n                _ => continue,\n            };\n            debug!(\"Received {signal_name}\");\n            send_transcription_input(&app_handle, binding_id, signal_name);\n        }","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/cjpais/Handy/blob/98a4d80cce8ad41efec2a419b59d9e81229a35d7/src-tauri/src/signal_handle.rs#L20-L56","documentation":"Error \"failed to register transcription signal handlers\" thrown in cjpais/Handy.","triggerScenarios":"Thrown at src-tauri/src/signal_handle.rs:38 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"98a4d80cce8ad41efec2a419b59d9e81229a35d7","analyzedAt":"2026-08-16T20:58:09.966Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}