vm_concierge
is a daemon that exposes a D-Bus interface to control lifetime of crosvm. See /vm_tools/README.md
for details.
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
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
scp dut:/var/spool/crash/vm_concierge.20230413.101819.53856.31734.dmp . tast symbolize vm_concierge.20230413.101819.53856.31734.dmp
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
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