code: def _kill_process_tree_without_psutil(process):
      """Terminate a process and its descendants."""
      try:
          if sys.platform == "win32":
              _windows_taskkill_process_tree(process.pid)
          else:
              _posix_recursive_kill(process.pid)
      except Exception:  # pragma: no cover
          details = traceback.format_exc()
          warnings.warn(
              "Failed to kill subprocesses on this platform. Please install"
              "psutil: https://github.com/giampaolo/psutil\n"
              f"Details:\n{details}"
          )
          # In case we cannot introspect or kill the descendants, we fall back to
          # only killing the main process.
          #
          # Note: on Windows, process.kill() is an alias for process.terminate()
          # which in turns calls the Win32 API function TerminateProcess().
          process.kill()
      process.join()
  
file_path: catboost/contrib/python/joblib/joblib/externals/loky/backend/utils.py
imports: import os
  import sys
  import time
  import errno
  import signal
  import warnings
  import subprocess
  import traceback
label_desc: Use image node_id 4 for calling a global function with example usage: _kill_process_tree_without_psutil(process) without return types