microdroid_manager shuts down on failure
When payload verification fails, microdroid_manager triggers shutdown so
that VirtualizationService gets notified and then again forwards the
event to VM user apps.
Repro:
1. adb shell apex/com.android.compos/bin/composd_cmd \
forced-compile-test
2. update compos apex (reboot)
3. run compos again
Bug: 204073443
Test: see above
Change-Id: Ide4d77f693e77a57eb15dd727eb50360abca6acb
diff --git a/virtualizationservice/src/crosvm.rs b/virtualizationservice/src/crosvm.rs
index dfb1cbb..19c720e 100644
--- a/virtualizationservice/src/crosvm.rs
+++ b/virtualizationservice/src/crosvm.rs
@@ -180,8 +180,8 @@
/// `self.vm_state` to avoid holding the lock on `vm_state` while it is running.
fn monitor(&self, child: Arc<SharedChild>) {
match child.wait() {
- Err(e) => error!("Error waiting for crosvm instance to die: {}", e),
- Ok(status) => info!("crosvm exited with status {}", status),
+ Err(e) => error!("Error waiting for crosvm({}) instance to die: {}", child.id(), e),
+ Ok(status) => info!("crosvm({}) exited with status {}", child.id(), status),
}
let mut vm_state = self.vm_state.lock().unwrap();
@@ -219,9 +219,11 @@
pub fn kill(&self) {
let vm_state = &*self.vm_state.lock().unwrap();
if let VmState::Running { child } = vm_state {
+ let id = child.id();
+ debug!("Killing crosvm({})", id);
// TODO: Talk to crosvm to shutdown cleanly.
if let Err(e) = child.kill() {
- error!("Error killing crosvm instance: {}", e);
+ error!("Error killing crosvm({}) instance: {}", id, e);
}
}
}
@@ -296,6 +298,7 @@
info!("Running {:?}", command);
let result = SharedChild::spawn(&mut command)?;
+ debug!("Spawned crosvm({}).", result.id());
Ok(result)
}