From b83bf7a65f0ac38a874dca19a7dcdc6fbdb5ed37 Mon Sep 17 00:00:00 2001 From: Yongji Wu <30348494+libertyeagle@users.noreply.github.com> Date: Tue, 1 Sep 2026 18:52:10 -0700 Subject: [PATCH] [Bugfix] Avoid scanning crash-dump token buffers during GC (#37297) Co-authored-by: Lianmin Zheng --- python/sglang/srt/managers/tokenizer_manager.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/python/sglang/srt/managers/tokenizer_manager.py b/python/sglang/srt/managers/tokenizer_manager.py index 895484239..2acc9efd0 100644 --- a/python/sglang/srt/managers/tokenizer_manager.py +++ b/python/sglang/srt/managers/tokenizer_manager.py @@ -2971,9 +2971,19 @@ class TokenizerManager(TokenizerControlMixin, TokenizerManagerScoreMixin): def record_request_for_crash_dump(self, state: ReqState, out_dict: dict): current_time = real_time() + request = state.obj + input_ids = request.input_ids + if isinstance(input_ids, list): + # Keep replay data intact without making full GC traverse every token. + request = copy.copy(request) + request.input_ids = ( + tuple(tuple(row) for row in input_ids) + if input_ids and isinstance(input_ids[0], list) + else tuple(input_ids) + ) self.crash_dump_request_list.append( ( - state.obj, + request, out_dict, convert_time_to_realtime(state.time_stats.created_time), current_time,