Tiny remove duplicate coredump env injection (#19023)

This commit is contained in:
Liangsheng Yin
2026-02-19 13:26:30 -08:00
committed by GitHub
parent 5ff5aa6923
commit db34c1cbfb
+19 -17
View File
@@ -8,18 +8,16 @@ with cuda-gdb.
The injection happens at module import time via _inject_env() on a The injection happens at module import time via _inject_env() on a
best-effort basis. If any CUDA_* variable is already present in the best-effort basis. If any CUDA_* variable is already present in the
environment (e.g. set by the user in the shell), injection is skipped for environment (e.g. set by the user in the shell), injection is skipped for
that variable and a warning is logged. For strict guarantees, set the that variable and a warning is printed. For strict guarantees, set the
CUDA_* env vars in the shell before launching Python. CUDA_* env vars in the shell before launching Python.
""" """
import glob import glob
import logging
import os import os
import warnings
from sglang.srt.environ import envs from sglang.srt.environ import envs
logger = logging.getLogger(__name__)
_CUDA_COREDUMP_FLAGS = ( _CUDA_COREDUMP_FLAGS = (
"skip_nonrelocated_elf_images,skip_global_memory," "skip_nonrelocated_elf_images,skip_global_memory,"
"skip_shared_memory,skip_local_memory,skip_constbank_memory" "skip_shared_memory,skip_local_memory,skip_constbank_memory"
@@ -48,12 +46,10 @@ def _inject_env():
} }
for key, value in env_vars.items(): for key, value in env_vars.items():
if key in os.environ: if key in os.environ:
logger.warning( warnings.warn(
"CUDA coredump env var %s is already set to '%s', " f"CUDA coredump env var {key} is already set to "
"skipping injection of '%s'.", f"'{os.environ[key]}', skipping injection of '{value}'.",
key, stacklevel=2,
os.environ[key],
value,
) )
else: else:
os.environ[key] = value os.environ[key] = value
@@ -73,21 +69,27 @@ def report():
if not coredump_files: if not coredump_files:
return return
logger.info(f"\n{'='*60}") print(f"\n{'='*60}")
logger.info(f"CUDA coredump(s) detected ({len(coredump_files)} file(s)):") print(f"CUDA coredump(s) detected ({len(coredump_files)} file(s)):")
for f in coredump_files: for f in coredump_files:
size_mb = os.path.getsize(f) / (1024 * 1024) size_mb = os.path.getsize(f) / (1024 * 1024)
logger.info(f" {f} ({size_mb:.1f} MB)") print(f" {f} ({size_mb:.1f} MB)")
logger.info("Use cuda-gdb to analyze: cuda-gdb -c <coredump_file>") print("Use cuda-gdb to analyze: cuda-gdb -c <coredump_file>")
run_id = os.environ.get("GITHUB_RUN_ID") run_id = os.environ.get("GITHUB_RUN_ID")
if run_id: if run_id:
repo = os.environ.get("GITHUB_REPOSITORY", "sgl-project/sglang") repo = os.environ.get("GITHUB_REPOSITORY", "sgl-project/sglang")
logger.info(f"Download from CI: gh run download {run_id} --repo {repo}") print(f"Download from CI: gh run download {run_id} --repo {repo}")
logger.info(f"{'='*60}\n") print(f"{'='*60}\n")
# Auto-inject CUDA coredump env vars at import time. # Auto-inject CUDA coredump env vars at import time.
if is_enabled(): # The sentinel env var is inherited by child processes, so injection only
# happens once in the top-level process.
_SENTINEL = "_SGLANG_CUDA_COREDUMP_INJECTED"
if is_enabled() and _SENTINEL not in os.environ:
os.environ[_SENTINEL] = "1"
print(f"Injecting CUDA coredump env vars (pid={os.getpid()})")
_inject_env() _inject_env()