From 9ec9cf7e0ff1dd433ac87210d5bb4da452299898 Mon Sep 17 00:00:00 2001 From: liqiang-fit2cloud Date: Wed, 26 Nov 2025 12:23:15 +0800 Subject: [PATCH] fix: kill all processes after timeout. --- apps/common/utils/tool_code.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/common/utils/tool_code.py b/apps/common/utils/tool_code.py index cc2571236..a64507802 100644 --- a/apps/common/utils/tool_code.py +++ b/apps/common/utils/tool_code.py @@ -7,6 +7,7 @@ import os import socket import subprocess import sys +import signal import uuid_utils.compat as uuid from common.utils.logger import maxkb_logger from django.utils.translation import gettext_lazy as _ @@ -234,8 +235,10 @@ exec({dedent(code)!a}) text=True, capture_output=True, timeout=self.process_timeout_seconds, + preexec_fn=os.setsid, **kwargs) - except subprocess.TimeoutExpired: + except subprocess.TimeoutExpired as e: + os.killpg(e.pid, signal.SIGKILL) raise Exception(_("Sandbox process execution timeout, consider increasing MAXKB_SANDBOX_PYTHON_PROCESS_TIMEOUT_SECONDS.")) return subprocess_result