From 50ca24aebb7d2dfcd63f2759d43819845ed597c6 Mon Sep 17 00:00:00 2001 From: Ratish P <114130421+Ratish1@users.noreply.github.com> Date: Tue, 17 Feb 2026 07:15:05 +0530 Subject: [PATCH] [diffusion]: fix scheduler crash on ZMQ messages with unexpected frame counts (#17890) Co-authored-by: Xiaoyu Zhang <35585791+BBuf@users.noreply.github.com> --- .../multimodal_gen/runtime/managers/scheduler.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/python/sglang/multimodal_gen/runtime/managers/scheduler.py b/python/sglang/multimodal_gen/runtime/managers/scheduler.py index 8bac6f0aa..911d77a1a 100644 --- a/python/sglang/multimodal_gen/runtime/managers/scheduler.py +++ b/python/sglang/multimodal_gen/runtime/managers/scheduler.py @@ -241,9 +241,13 @@ class Scheduler: if self.receiver is not None: try: try: - identity, _, payload = self.receiver.recv_multipart(zmq.NOBLOCK) - recv_reqs = pickle.loads(payload) - except zmq.Again: + # Accept valid REQ envelopes only, ignore malformed/probe frames. + parts = self.receiver.recv_multipart(zmq.NOBLOCK) + identity, payload = parts[0], parts[-1] + + # Ignore malformed probes or non-pickle data + recv_reqs = pickle.loads(payload) if len(parts) > 2 else [] + except (zmq.Again, pickle.UnpicklingError, IndexError, EOFError): recv_reqs = [] except zmq.ZMQError: # re-raise or handle appropriately to let the outer loop continue