Mercurial > hg > graal-jvmci-8
changeset 14134:e71d421370f3
mx: proxy SIGQUIT to child process
useful to get a jstack like output
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Tue, 11 Mar 2014 18:36:49 +0100 |
parents | d2e4b81fd8f0 |
children | ee66410c0679 |
files | mxtool/mx.py |
diffstat | 1 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mxtool/mx.py Tue Mar 11 18:36:20 2014 +0100 +++ b/mxtool/mx.py Tue Mar 11 18:36:49 2014 +0100 @@ -1092,10 +1092,10 @@ def run_java(args, nonZeroIsFatal=True, out=None, err=None, cwd=None, addDefaultArgs=True): return run(java().format_cmd(args, addDefaultArgs), nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd) -def _kill_process_group(pid): +def _kill_process_group(pid, sig=signal.SIGKILL): pgid = os.getpgid(pid) try: - os.killpg(pgid, signal.SIGKILL) + os.killpg(pgid, sig) return True except: log('Error killing subprocess ' + str(pgid) + ': ' + str(sys.exc_info()[1])) @@ -1464,6 +1464,15 @@ return result +def quit_handler(signum, frame): + p, _ = _currentSubprocess + if p is not None: + if get_os() == 'windows': + log("mx: implement me! want to send SIGQUIT to my child process") + else: + _kill_process_group(p.pid, sig=signal.SIGQUIT) + time.sleep(0.1) + def abort(codeOrMessage): """ Aborts the program with a SystemExit exception. @@ -4066,6 +4075,9 @@ def term_handler(signum, frame): abort(1) signal.signal(signal.SIGTERM, term_handler) + + signal.signal(signal.SIGQUIT, quit_handler) + try: if opts.timeout != 0: def alarm_handler(signum, frame):