## Show that SIGINT and similar signals don't cause crash messages to be ## reported. # RUN: %python %s wrapper llvm-symbolizer 2> %t.err # RUN: count 0 < %t.err import os import signal import subprocess import sys import time def run_symbolizer(): proc = subprocess.Popen([sys.argv[2]], stdout=subprocess.PIPE, stdin=subprocess.PIPE) # Write then read some output to ensure the process has started fully. proc.stdin.write(b'foo\n') proc.stdin.flush() proc.stdout.readline() # Windows handles signals differently. if os.name == 'nt': os.kill(0, signal.CTRL_BREAK_EVENT) else: proc.send_signal(signal.SIGINT) # On Windows, this function spawns the subprocess in its own (hidden) console, # so that signals do not interfere with the calling test. This isn't necessary # on other systems. def run_wrapper(): args = [sys.executable, __file__, 'symbolizer'] + sys.argv[2:] if os.name == 'nt': startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW proc = subprocess.Popen(args, stderr=sys.stderr, startupinfo=startupinfo, creationflags=subprocess.CREATE_NEW_CONSOLE) else: proc = subprocess.Popen(args, stderr=subprocess.PIPE) if sys.argv[1] == 'wrapper': run_wrapper() else: run_symbolizer()