{"record":{"id":"f995386755d9b37a","repo":"firecracker-microvm/firecracker","slug":"vcpu-already-started","errorCode":null,"errorMessage":"vCPU already started","messagePattern":"vCPU already started","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/vmm/src/vstate/vcpu.rs","lineNumber":188,"sourceCode":"    pub fn copy_kvm_vcpu_fd(&self, vm: &KvmVm) -> Result<VcpuFd, CopyKvmFdError> {\n        // SAFETY: We own this fd so it is considered safe to clone\n        let r = unsafe { libc::dup(self.kvm_vcpu.fd.as_raw_fd()) };\n        if r < 0 {\n            return Err(std::io::Error::last_os_error().into());\n        }\n        // SAFETY: We assert this is a valid fd by checking the result from the dup\n        unsafe { Ok(vm.fd().create_vcpu_from_rawfd(r)?) }\n    }\n\n    /// Moves the vcpu to its own thread and constructs a VcpuHandle.\n    /// The handle can be used to control the remote vcpu.\n    pub fn start_threaded(\n        mut self,\n        vm: &KvmVm,\n        seccomp_filter: Arc<BpfProgram>,\n        barrier: Arc<Barrier>,\n    ) -> Result<VcpuHandle, StartThreadedError> {\n        let event_sender = self.event_sender.take().expect(\"vCPU already started\");\n        let response_receiver = self.response_receiver.take().unwrap();\n        let vcpu_fd = self\n            .copy_kvm_vcpu_fd(vm)\n            .map_err(StartThreadedError::CopyFd)?;\n        let vcpu_thread = thread::Builder::new()\n            .name(format!(\"fc_vcpu {}\", self.kvm_vcpu.index))\n            .spawn(move || {\n                let filter = &*seccomp_filter;\n                self.register_kick_signal_handler();\n                // Synchronization to make sure thread local data is initialized.\n                barrier.wait();\n                self.run(filter);\n            })\n            .map_err(StartThreadedError::Spawn)?;\n\n        Ok(VcpuHandle::new(\n            event_sender,\n            response_receiver,","sourceCodeStart":170,"sourceCodeEnd":206,"githubUrl":"https://github.com/firecracker-microvm/firecracker/blob/81b38b9dad6056d7a48073e95ac5a9aed51cb2ab/src/vmm/src/vstate/vcpu.rs#L170-L206","documentation":"Error \"vCPU already started\" thrown in firecracker-microvm/firecracker.","triggerScenarios":"Thrown at src/vmm/src/vstate/vcpu.rs:188 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Do not start a vCPU that has already been started; check vCPU state before issuing a start.","Ensure resume/start API calls are idempotent or rejected when the vCPU is running."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"81b38b9dad6056d7a48073e95ac5a9aed51cb2ab","analyzedAt":"2026-08-19T05:27:02.517Z","contentChangedAt":"2026-08-19T05:27:02.517Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}