summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/asan/scripts/asan_symbolize.py
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2013-07-04 14:21:49 +0000
committerAlexander Potapenko <glider@google.com>2013-07-04 14:21:49 +0000
commit4f73dea69d4576f8a4a785104bcfef4fff179e65 (patch)
tree279fcfe7e4356b9d0d2337f285e7ba9c8fbaa239 /compiler-rt/lib/asan/scripts/asan_symbolize.py
parent5dac06ff4b7dd535918dbf1f2482d2c836942a28 (diff)
downloadbcm5719-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-xcompiler-rt/lib/asan/scripts/asan_symbolize.py9
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."""
OpenPOWER on IntegriCloud