diff --git a/venv/cros_venv/scripts/create_venv.py b/venv/cros_venv/scripts/create_venv.py
index 2864d1b..543ab7e 100644
--- a/venv/cros_venv/scripts/create_venv.py
+++ b/venv/cros_venv/scripts/create_venv.py
@@ -16,6 +16,7 @@
 
 import argparse
 import logging
+import sys
 
 from cros_venv import venvlib
 
@@ -32,7 +33,14 @@
     with open(args.reqs_file, 'r') as f:
         spec = venvlib.make_spec(f)
     venv = venvlib.VersionedVenv(spec)
-    print(venv.ensure())
+    try:
+        print(venv.ensure())
+        logging.debug('Log file can be found at: %s', venv.logfile)
+    except Exception:
+        logging.error('Creating venv with reqs file "%s" failed',
+                      args.reqs_file, exc_info=True)
+        logging.error('Dumping entire creation log:\n%s', venv.logdata)
+        sys.exit(1)
 
 
 def configure_logging(verbose):
diff --git a/venv/cros_venv/venvlib.py b/venv/cros_venv/venvlib.py
index b0eef45..7035b97 100644
--- a/venv/cros_venv/venvlib.py
+++ b/venv/cros_venv/venvlib.py
@@ -9,14 +9,17 @@
 from __future__ import unicode_literals
 
 import collections
+import distutils.util
 import functools
 import hashlib
 import itertools
 import json
 import os
+import platform
 import shutil
 import subprocess
 import sys
+import sysconfig
 import tempfile
 import warnings
 
@@ -103,6 +106,30 @@
             self._check_or_create()
         return self._paths.venvdir
 
+    @property
+    def logfile(self):
+        """Show path to internal log file."""
+        return self._paths.logfile
+
+    @property
+    def logdata(self):
+        """Get any internal logged data."""
+        with open(self._paths.logfile) as fp:
+            return fp.read()
+
+    def _log_env(self, logfile):
+        """Log details about the active runtime for debugging."""
+        def get_var(var):
+            return sysconfig.get_config_var(var)
+        logfile.writelines([
+            'venv spec: %s\n' % (self._spec,),
+            'Distutils platform tag: %s\n' % (distutils.util.get_platform(),),
+            'Python implementation: %s\n' % (platform.python_implementation(),),
+        ])
+        for var in ('py_version_nodot', 'SOABI', 'Py_DEBUG', 'WITH_PYMALLOC',
+                    'Py_UNICODE_SIZE'):
+            logfile.write('sysconfig %s: %s\n' % (var, get_var(var)))
+
     def _check_or_create(self):
         """Check virtualenv, creating it if it is not created."""
         try:
@@ -116,6 +143,7 @@
         """Create virtualenv."""
         with open(self._paths.logfile, 'w') as logfile, \
              _make_reqs_file(self._spec) as reqs_file:
+            self._log_env(logfile)
             _create_venv(venvdir=self._paths.venvdir,
                          logfile=logfile)
             _install_reqs_file(python_path=self._paths.python,
@@ -241,7 +269,7 @@
 
 def _install_reqs_file(python_path, reqs_path, logfile):
     """Install reqs file using pip."""
-    command = [python_path, '-m', 'pip', 'install',
+    command = [python_path, '-m', 'pip', 'install', '-vvv',
                '--no-index', '-f', 'file://' + _PACKAGE_DIR, '-r', reqs_path]
     _log_check_call(command, logfile=logfile)
 
