diff options
author | rsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-05 23:41:04 +0000 |
---|---|---|
committer | rsimha@chromium.org <rsimha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-05 23:41:04 +0000 |
commit | c47d81dedaf59d3441acdc0cd60fdddc7078aa2d (patch) | |
tree | a9b24dddc91774e3ce9ef212807a5fb406d1b295 /base/process_util.h | |
parent | 23f5ee3f8b0c9f854c080db48b1f97603576d865 (diff) | |
download | chromium_src-c47d81dedaf59d3441acdc0cd60fdddc7078aa2d.zip chromium_src-c47d81dedaf59d3441acdc0cd60fdddc7078aa2d.tar.gz chromium_src-c47d81dedaf59d3441acdc0cd60fdddc7078aa2d.tar.bz2 |
Clean up orphaned testserver processes before launching a new one in net::TestServer
Several chrome tests have failed in recent days because some test cases crashed due to failures, leaving behind orphaned testserver processes. These test suites do not use out_of_proc_test_runner, and therefore, do not get the benefit of using the LaunchAppInNewProcessGroup()/KillProcessGroup() mechanism.
This patch implements an added layer of safety, by causing TestServer::LaunchPython() to first kill any remaining orphaned instances of testserver.py before launching a new one. The check for an orphaned testserver process on POSIX is a process with exe_name "python", a parent_pid of "1" (indicating that it's an orphan), and command line parameters that contain the strings "testserver.py" and "<port>" where <port> is the port that is being used by the test server instance.
BUG=55808,57253
TEST=Run a test that spawns a testserver and dies. Run another test. It shouldn't fail.
Review URL: http://codereview.chromium.org/3537002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61584 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/process_util.h')
-rw-r--r-- | base/process_util.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/base/process_util.h b/base/process_util.h index c513f3d..6876e88 100644 --- a/base/process_util.h +++ b/base/process_util.h @@ -67,10 +67,15 @@ struct ProcessEntry { ProcessId ppid_; ProcessId gid_; std::string exe_file_; + std::vector<std::string> cmd_line_args_; ProcessId pid() const { return pid_; } ProcessId parent_pid() const { return ppid_; } + ProcessId gid() const { return gid_; } const char* exe_file() const { return exe_file_.c_str(); } + const std::vector<std::string>& cmd_line_args() const { + return cmd_line_args_; + } }; struct IoCounters { |