| Index: tools/isolate/trace_child_process.py
|
| diff --git a/tools/isolate/trace_child_process.py b/tools/isolate/trace_child_process.py
|
| index 3a8367bbbaa2462fcf8cebb9b400b68babb8b236..07d9915c50c813656f812b42054d2fd1d60dead4 100755
|
| --- a/tools/isolate/trace_child_process.py
|
| +++ b/tools/isolate/trace_child_process.py
|
| @@ -3,30 +3,32 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -"""Waits for the go signal and replaces itself with the command to be run.
|
| +"""Executes with the command to be run and optionally waits for the go signal.
|
|
|
| Not meant to be used directly, only meant to be used by trace_inputs.py.
|
| +
|
| +This script is used by the tracer as a signal for the log parser that the child
|
| +process is the process we care about. It is especially important on kernel based
|
| +tracer because we want it to trace the relevant process tree.
|
| """
|
|
|
| -import os
|
| import subprocess
|
| import sys
|
|
|
|
|
| def main():
|
| - signal = 'Go!'
|
| - value = sys.stdin.read(len(signal))
|
| - assert value == signal
|
| - sys.stdin.close()
|
| - # Replace the executable with an absolute path to make it easier to grok.
|
| cmd = sys.argv[1:]
|
| - cmd[0] = os.path.abspath(cmd[0])
|
| - if cmd[0].endswith('.py'):
|
| - cmd.insert(0, sys.executable)
|
| - p = subprocess.Popen(cmd)
|
| - #print 'Child pid: %d' % p.pid
|
| - p.wait()
|
| - return p.returncode
|
| + if sys.argv[1] == '--wait':
|
| + cmd = cmd[1:]
|
| + signal = 'Go!'
|
| + value = sys.stdin.read(len(signal))
|
| + assert value == signal
|
| + sys.stdin.close()
|
| +
|
| + # The reason os.execve() is not used is that we don't want the modules
|
| + # imported here to influence the executable being traced, so we need a fresh
|
| + # pid and need to fork.
|
| + return subprocess.call(cmd)
|
|
|
|
|
| if __name__ == '__main__':
|
|
|