Revert "libvmclient: Take VmCallback in VmInstance::start()"
Revert submission 3408863
Reason for revert: Likely culprit for b/391356639 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.
Reverted changes: /q/submissionid:3408863
Change-Id: Id9436b9557e0fd4cbc94df9f22ba35132619aa91
diff --git a/libs/libvmclient/src/lib.rs b/libs/libvmclient/src/lib.rs
index 2c6abb5..8dd3cd3 100644
--- a/libs/libvmclient/src/lib.rs
+++ b/libs/libvmclient/src/lib.rs
@@ -209,6 +209,7 @@
console_in: Option<File>,
log: Option<File>,
dump_dt: Option<File>,
+ callback: Option<Box<dyn VmCallback + Send + Sync>>,
) -> BinderResult<Self> {
let console_out = console_out.map(ParcelFileDescriptor::new);
let console_in = console_in.map(ParcelFileDescriptor::new);
@@ -225,19 +226,20 @@
let cid = vm.getCid()?;
+ // Register callback before starting VM, in case it dies immediately.
let state = Arc::new(Monitor::new(VmState::default()));
+ let callback = BnVirtualMachineCallback::new_binder(
+ VirtualMachineCallback { state: state.clone(), client_callback: callback },
+ BinderFeatures::default(),
+ );
+ vm.registerCallback(&callback)?;
let death_recipient = wait_for_binder_death(&mut vm.as_binder(), state.clone())?;
Ok(Self { vm, cid, state, _death_recipient: death_recipient })
}
/// Starts the VM.
- pub fn start(&self, callback: Option<Box<dyn VmCallback + Send + Sync>>) -> BinderResult<()> {
- let callback = BnVirtualMachineCallback::new_binder(
- VirtualMachineCallback { state: self.state.clone(), client_callback: callback },
- BinderFeatures::default(),
- );
- self.vm.registerCallback(&callback)?;
+ pub fn start(&self) -> BinderResult<()> {
self.vm.start()
}