vm_tools: concierge: /usr/local/bin can be missing.

BUG=b:233835288
TEST=arc.Boot.vm on the test image without /usr/local/bin

Change-Id: I6c232566abbfb10f51a451d82fc12978b5327220
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3697692
Reviewed-by: Kansho Nishida <kansho@chromium.org>
Reviewed-by: Ryo Hashimoto <hashimoto@chromium.org>
Auto-Submit: Kazuhiro Inaba <kinaba@chromium.org>
Tested-by: Kazuhiro Inaba <kinaba@chromium.org>
(cherry picked from commit f1be58e883c67b02211afea10d2a68674108a8e5)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3706950
Commit-Queue: Ryo Hashimoto <hashimoto@chromium.org>
diff --git a/vm_tools/concierge/arc_vm.cc b/vm_tools/concierge/arc_vm.cc
index bbbc2ce..ef7eccf 100644
--- a/vm_tools/concierge/arc_vm.cc
+++ b/vm_tools/concierge/arc_vm.cc
@@ -337,7 +337,13 @@
                                  "CHROMEOS_RELEASE_TRACK", &channel_string) &&
                              base::StartsWith(channel_string, "test");
   if (is_test_image) {
-    vm_builder.AppendSharedDir(shared_usr_local_bin);
+    if (base::PathExists(usr_local_bin_dir)) {
+      vm_builder.AppendSharedDir(shared_usr_local_bin);
+    } else {
+      // Powerwashing etc can delete the directory from test image device.
+      // We shouldn't abort ARCVM boot even under such an environment.
+      LOG(WARNING) << kUsrLocalBinSharedDir << " is missing on test image.";
+    }
   }
 
   if (custom_parameters.ObtainSpecialParameter(kKeyToOverrideODirect)