blob: dd7ec35431cc4be4dd27dee3954208d37138b255 [file] [log] [blame] [view] [edit]
# vm_concierge
`vm_concierge` is a daemon that exposes a D-Bus interface to control lifetime of
crosvm. See [`/vm_tools/README.md`](/vm_tools/README.md) for details.
[TOC]
## Hacking
If you are modifying protocols, cros_workon `vm_protos` for grpc and
`chromeos-base/system_api` for dbus.
```
cros_workon --board ${BOARD} start \
chromeos-base/system_api chromeos-base/vm_host_tools chromeos-base/vm_protos
```
Then it is possible to iterate on `vm_concierge`.
```
cros_workon_make --test --board=${BOARD} \
chromeos-base/system_api \
--install # If system_api changed.
cros_workon_make --test --board=${BOARD} \
chromeos-base/vm_protos \
--install # If vm_protos changed.
cros_workon_make --test --board=${BOARD} chromeos-base/vm_host_tools
```
When deploying modifications to device, you can cros deploy the result.
```
cros_workon_make --test --install --board=brya chromeos-base/vm_host_tools && \
cros deploy $DUT vm_host_tools
```
### Obtaining backtrace on crash
Observe the logs on the device. Trigger what you are trying to debug. For
inspiration, the following are examples of triggering crash and observing logs.
```
tail -f /var/log/messages & start vm_concierge; fg
tail -f /var/log/messages & stop vm_concierge; fg
tail -f /var/log/messages & vmc stop termina; fg
```
Observe the dump log file on your workstation to get a backtrace. Using
[tast symbolize](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/stack_traces.md#Symbolizing-minidumps-with-tast-symbolize)
```
scp dut:/var/spool/crash/vm_concierge.20230413.101819.53856.31734.dmp .
tast symbolize vm_concierge.20230413.101819.53856.31734.dmp
```
### When concierge fails to start up
concierge is started via upstart on /etc/init/vm_concierge.conf. Failure is
silent. Adding logging may help. Example:
https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3600040
### When crosvm fails to start up
Adding strace to crosvm may help sometimes. For arcvm, `arcvm_dev.conf` can be
used like this:
```
precrosvm:/usr/local/bin/strace
precrosvm:-T
precrosvm:-ttt
precrosvm:--decode-fds=path
precrosvm:--decode-pids=comm
precrosvm:-f
precrosvm:-o
precrosvm:/run/vm/crosvm_strace
```
For others, code change is needed, like:
https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3205434