summary refs log tree commit diff
path: root/x86_64
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2019-01-23 19:04:43 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-26 00:59:57 -0800
commit3ba0098d6764df4a7b2c885f0cf5263b4062c357 (patch)
tree87e285eb55498f152457ffacdf66345feb5ed037 /x86_64
parent1be25dc3d2ce8afe41d0fe7fe7b157c3f1787b50 (diff)
downloadcrosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar
crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.gz
crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.bz2
crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.lz
crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.xz
crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.zst
crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.zip
crosvm: add debug labels to devices for improved SIGCHLD logs
Each device (Bus, Pci, Proxy, etc), gets a debug label associated with
it. When a child is spawned, the debug label for it is stored in
a map with the child's pid as the key. If a SIGCHLD is handled, this map
is used to print a more helpful message about exactly which child died.

BUG=None
TEST=run with sandboxing and a faulty child device
     check logs for message about child died
     the child should have a debug label

Change-Id: I61fbbee0a8e701249533a7a3a6a1ad48840f12e5
Reviewed-on: https://chromium-review.googlesource.com/1432835
Commit-Ready: Chih-Yang Hsia <paulhsia@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Tested-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'x86_64')
-rw-r--r--x86_64/src/lib.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/x86_64/src/lib.rs b/x86_64/src/lib.rs
index 524013c..2857bb7 100644
--- a/x86_64/src/lib.rs
+++ b/x86_64/src/lib.rs
@@ -300,7 +300,7 @@ impl arch::LinuxArch for X8664arch {
         let exit_evt = EventFd::new().map_err(Error::CreateEventFd)?;
 
         let pci_devices = virtio_devs(&mem, &exit_evt)?;
-        let (pci, pci_irqs) =
+        let (pci, pci_irqs, pid_debug_label_map) =
             arch::generate_pci_root(pci_devices, &mut mmio_bus, &mut resources, &mut vm)
                 .map_err(Error::CreatePciRoot)?;
         let pci_bus = Arc::new(Mutex::new(PciConfigIo::new(pci)));
@@ -336,6 +336,7 @@ impl arch::LinuxArch for X8664arch {
             irq_chip,
             io_bus,
             mmio_bus,
+            pid_debug_label_map,
         })
     }
 }
@@ -463,7 +464,11 @@ impl X8664arch {
         pci: Option<Arc<Mutex<devices::PciConfigIo>>>,
     ) -> Result<(devices::Bus, Arc<Mutex<devices::Serial>>)> {
         struct NoDevice;
-        impl devices::BusDevice for NoDevice {}
+        impl devices::BusDevice for NoDevice {
+            fn debug_label(&self) -> String {
+                "no device".to_owned()
+            }
+        }
 
         let mut io_bus = devices::Bus::new();