diff options
author | Alexander Potapenko <glider@google.com> | 2013-07-04 14:21:49 +0000 |
---|---|---|
committer | Alexander Potapenko <glider@google.com> | 2013-07-04 14:21:49 +0000 |
commit | 4f73dea69d4576f8a4a785104bcfef4fff179e65 (patch) | |
tree | 279fcfe7e4356b9d0d2337f285e7ba9c8fbaa239 /compiler-rt/lib/asan/scripts/asan_symbolize.py | |
parent | 5dac06ff4b7dd535918dbf1f2482d2c836942a28 (diff) | |
download | bcm5719-llvm-4f73dea69d4576f8a4a785104bcfef4fff179e65.tar.gz bcm5719-llvm-4f73dea69d4576f8a4a785104bcfef4fff179e65.zip |
[ASan] Close stderr before launching atos in asan_symbolize.py
llvm-svn: 185631
Diffstat (limited to 'compiler-rt/lib/asan/scripts/asan_symbolize.py')
-rwxr-xr-x | compiler-rt/lib/asan/scripts/asan_symbolize.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler-rt/lib/asan/scripts/asan_symbolize.py b/compiler-rt/lib/asan/scripts/asan_symbolize.py index 81c9b960496..3571468d877 100755 --- a/compiler-rt/lib/asan/scripts/asan_symbolize.py +++ b/compiler-rt/lib/asan/scripts/asan_symbolize.py @@ -142,10 +142,13 @@ class UnbufferedLineConverter(object): Wrap a child process that responds to each line of input with one line of output. Uses pty to trick the child into providing unbuffered output. """ - def __init__(self, args): + def __init__(self, args, close_stderr=False): pid, fd = pty.fork() if pid == 0: - # We're the child. Transfer control to command. + # We're the child. Transfer control to command. + if close_stderr: + dev_null = os.open('/dev/null', 0) + os.dup2(dev_null, 2) os.execvp(args[0], args) else: # Disable echoing. @@ -179,7 +182,7 @@ class DarwinSymbolizer(Symbolizer): if DEBUG: print 'atos -o %s -arch %s' % (self.binary, self.arch) cmdline = ['atos', '-o', self.binary, '-arch', self.arch] - self.atos = UnbufferedLineConverter(cmdline) + self.atos = UnbufferedLineConverter(cmdline, close_stderr=True) def symbolize(self, addr, binary, offset): """Overrides Symbolizer.symbolize.""" |