summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorbruening@google.com <bruening@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-21 22:26:48 +0000
committerbruening@google.com <bruening@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-21 22:26:48 +0000
commitccaff4c1e8beeaf46223ef2e22f33f6f0a451640 (patch)
tree7a21eefce3e79c1fb32eb6b0b92834511fa7d269 /tools
parent5cf19b9eb17bbce0da6aa0f66b53455e5fc1a297 (diff)
downloadchromium_src-ccaff4c1e8beeaf46223ef2e22f33f6f0a451640.zip
chromium_src-ccaff4c1e8beeaf46223ef2e22f33f6f0a451640.tar.gz
chromium_src-ccaff4c1e8beeaf46223ef2e22f33f6f0a451640.tar.bz2
change temp log dir and --keep_logs log dir and symcache dir to all be inside a dir writable at Low Integrity for the chrome gpu process
BUG=119131 TEST=ran chrome_tests.bat with and without --keep_logs Review URL: https://chromiumcodereview.appspot.com/9769005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128075 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/valgrind/valgrind_test.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/tools/valgrind/valgrind_test.py b/tools/valgrind/valgrind_test.py
index a44ace99..113460a 100644
--- a/tools/valgrind/valgrind_test.py
+++ b/tools/valgrind/valgrind_test.py
@@ -33,8 +33,24 @@ class BaseTool(object):
"""
def __init__(self):
- self.temp_dir = tempfile.mkdtemp(prefix="vg_logs_") # Generated every time
- self.log_dir = self.temp_dir # overridable by --keep_logs
+ temp_parent_dir = None
+ self.log_parent_dir = ""
+ if common.IsWindows():
+ # gpu process on Windows Vista+ runs at Low Integrity and can only
+ # write to certain directories (http://crbug.com/119131)
+ #
+ # TODO(bruening): if scripts die in middle and don't clean up temp
+ # dir, we'll accumulate files in profile dir. should remove
+ # really old files automatically.
+ profile = os.getenv("USERPROFILE")
+ if profile:
+ self.log_parent_dir = profile + "\\AppData\\LocalLow\\"
+ if os.path.exists(self.log_parent_dir):
+ self.log_parent_dir = common.NormalizeWindowsPath(self.log_parent_dir)
+ temp_parent_dir = self.log_parent_dir
+ # Generated every time (even when overridden)
+ self.temp_dir = tempfile.mkdtemp(prefix="vg_logs_", dir=temp_parent_dir)
+ self.log_dir = self.temp_dir # overridable by --keep_logs
self.option_parser_hooks = []
# TODO(glider): we may not need some of the env vars on some of the
# platforms.
@@ -125,10 +141,12 @@ class BaseTool(object):
self._timeout = int(self._options.timeout)
self._source_dir = self._options.source_dir
if self._options.keep_logs:
- self.log_dir = "%s.logs" % self.ToolName()
+ # log_parent_dir has trailing slash if non-empty
+ self.log_dir = self.log_parent_dir + "%s.logs" % self.ToolName()
if os.path.exists(self.log_dir):
shutil.rmtree(self.log_dir)
os.mkdir(self.log_dir)
+ logging.info("Logs are in " + self.log_dir)
self._ignore_exit_code = self._options.ignore_exit_code
if self._options.gtest_filter != "":
@@ -852,11 +870,16 @@ class DrMemory(BaseTool):
proc += ["-logdir", common.NormalizeWindowsPath(self.log_dir)]
- if self._options.build_dir:
+ if self.log_parent_dir:
+ # gpu process on Windows Vista+ runs at Low Integrity and can only
+ # write to certain directories (http://crbug.com/119131)
+ symcache_dir = os.path.join(self.log_parent_dir, "drmemory.symcache")
+ elif self._options.build_dir:
# The other case is only possible with -t cmdline.
# Anyways, if we omit -symcache_dir the -logdir's value is used which
# should be fine.
symcache_dir = os.path.join(self._options.build_dir, "drmemory.symcache")
+ if symcache_dir:
if not os.path.exists(symcache_dir):
try:
os.mkdir(symcache_dir)
@@ -898,6 +921,7 @@ class DrMemory(BaseTool):
wrapper_path = os.path.join(self._source_dir,
"tools", "valgrind", "browser_wrapper_win.py")
self.CreateBrowserWrapper(" ".join(["python", wrapper_path] + proc))
+ logging.info("browser wrapper = " + " ".join(proc))
proc = []
# Note that self._args begins with the name of the exe to be run.