diff --git a/lib/portage_util.py b/lib/portage_util.py
index ec87c27..516d1ff 100644
--- a/lib/portage_util.py
+++ b/lib/portage_util.py
@@ -885,16 +885,25 @@
 
     # The chromeos-version script will output a usable raw version number,
     # or nothing in case of error or no available version
-    try:
-      output = self._RunCommand([vers_script] + srcdirs).strip()
-    except cros_build_lib.RunCommandError as e:
-      cros_build_lib.Die('Package %s chromeos-version.sh failed: %s' %
-                         (self.pkgname, e))
+    result = cros_build_lib.RunCommand(['bash', '-x', vers_script] + srcdirs,
+                                       capture_output=True, error_code_ok=True)
 
-    if not output:
-      cros_build_lib.Die('Package %s has a chromeos-version.sh script but '
-                         'it returned no valid version for "%s"' %
-                         (self.pkgname, ' '.join(srcdirs)))
+    output = result.output.strip()
+    if result.returncode or not output:
+      # Crbug.com/917099 - Let's get more information for debugging, at least
+      # temporarily.
+      fsck_out = {}
+      for srcdir in srcdirs:
+        fsck_out[srcdir] = self._RunCommand(['git', 'fsck', srcdir],
+                                            error_code_ok=True)
+      # TODO(crbug.com/917099): Remove this long-term because it's verbose.
+      ls_out = self._RunCommand(['ls', '-lRa'] + srcdirs, error_code_ok=True)
+      cros_build_lib.Die(
+          'Package %s has a chromeos-version.sh script but failed:\n'
+          'return code = %s\nstdout = %s\nstderr = %s\ndir listing = %s\n'
+          'git fsck = %s\nsrcdirs = %s\n',
+          self.pkgname, result.returncode, result.output, result.error,
+          ls_out, fsck_out, srcdirs)
 
     # Sanity check: disallow versions that will be larger than the 9999 ebuild
     # used by cros-workon.
diff --git a/lib/portage_util_unittest.py b/lib/portage_util_unittest.py
index f0d0cfb..34ed0dd 100644
--- a/lib/portage_util_unittest.py
+++ b/lib/portage_util_unittest.py
@@ -716,7 +716,9 @@
     self.PatchObject(portage_util.EBuild, 'GetSourceInfo',
                      return_value=portage_util.SourceInfo(
                          projects=None, srcdirs=[], subdirs=[], subtrees=[]))
-    self.PatchObject(portage_util.EBuild, '_RunCommand', return_value='1122')
+    self.PatchObject(cros_build_lib, 'RunCommand',
+                     return_value=cros_build_lib.CommandResult(
+                         returncode=0, output='1122', error='STDERR'))
     self.assertEqual('1122', self.m_ebuild.GetVersion(None, None, '1234'))
     # Sanity check.
     self.assertEqual(exists.call_count, 1)
@@ -727,17 +729,27 @@
     self.PatchObject(portage_util.EBuild, 'GetSourceInfo',
                      return_value=portage_util.SourceInfo(
                          projects=None, srcdirs=[], subdirs=[], subtrees=[]))
-    run = self.PatchObject(portage_util.EBuild, '_RunCommand')
+    run = self.PatchObject(cros_build_lib, 'RunCommand')
 
     # Reject no output.
-    run.return_value = ''
+    run.return_value = cros_build_lib.CommandResult(
+        returncode=0, output='', error='STDERR')
     self.assertRaises(SystemExit, self.m_ebuild.GetVersion, None, None, '1234')
     # Sanity check.
     self.assertEqual(exists.call_count, 1)
     exists.reset_mock()
 
     # Reject simple output.
-    run.return_value = '\n'
+    run.return_value = cros_build_lib.CommandResult(
+        returncode=0, output='\n', error='STDERR')
+    self.assertRaises(SystemExit, self.m_ebuild.GetVersion, None, None, '1234')
+    # Sanity check.
+    self.assertEqual(exists.call_count, 1)
+    exists.reset_mock()
+
+    # Reject error.
+    run.return_value = cros_build_lib.CommandResult(
+        returncode=1, output='FAIL\n', error='STDERR')
     self.assertRaises(SystemExit, self.m_ebuild.GetVersion, None, None, '1234')
     # Sanity check.
     self.assertEqual(exists.call_count, 1)
@@ -748,7 +760,9 @@
     self.PatchObject(portage_util.EBuild, 'GetSourceInfo',
                      return_value=portage_util.SourceInfo(
                          projects=None, srcdirs=[], subdirs=[], subtrees=[]))
-    self.PatchObject(portage_util.EBuild, '_RunCommand', return_value='999999')
+    self.PatchObject(cros_build_lib, 'RunCommand',
+                     return_value=cros_build_lib.CommandResult(
+                         returncode=0, output='999999', error='STDERR'))
     self.assertRaises(ValueError, self.m_ebuild.GetVersion, None, None, '1234')
     # Sanity check.
     self.assertEqual(exists.call_count, 1)
@@ -759,7 +773,9 @@
     self.PatchObject(portage_util.EBuild, 'GetSourceInfo',
                      return_value=portage_util.SourceInfo(
                          projects=None, srcdirs=[], subdirs=[], subtrees=[]))
-    self.PatchObject(portage_util.EBuild, '_RunCommand', return_value='abcd')
+    self.PatchObject(cros_build_lib, 'RunCommand',
+                     return_value=cros_build_lib.CommandResult(
+                         returncode=0, output='abcd', error='STDERR'))
     self.assertRaises(ValueError, self.m_ebuild.GetVersion, None, None, '1234')
     # Sanity check.
     self.assertEqual(exists.call_count, 1)
