boolean (@NotNull Process process) { if (SystemInfo.isWindows) { try { Integer pid = ProcessService.getInstance().winPtyChildProcessId(process); if (pid != null) { if (pid == -1) return true; boolean res = WinProcessManager.kill(pid, true); process.destroy(); return res; } if (Registry.is("disable.winp", false)) { return WinProcessManager.kill(process, true); } else { if (!process.isAlive()) { logSkippedActionWithTerminatedProcess(process, "killProcessTree", null); return true; } ProcessService.getInstance().killWinProcessRecursively(process); return true; } } catch (Throwable e) { LOG.info("Cannot kill process tree", e); } } else if (SystemInfo.isUnix) { return UnixProcessManager.sendSigKillToProcessTree(process); } return false; }