[Bug]: Talker EngineCore crashes with islice ValueError instead of rejecting completions API for thinker+talker models
#5,495 opened on Jul 28, 2026
Repository metrics
- Stars
- (4,990 stars)
- PR merge metrics
- (PR metrics pending)
Description
Symptom
tests/e2e/online_serving/test_qwen3_omni.py::test_completions_rejected_for_thinker_talker[default] expects the completions API to be rejected with HTTP 400 on a thinker+talker (multi-stage) model, but the request instead reaches the stage-1 (talker) scheduler and crashes the EngineCore, surfacing as HTTP 500:
File ".../vllm_omni/core/sched/omni_ar_scheduler.py", line 268, in schedule
scheduler_output = super().schedule(throttle_prefills)
File ".../vllm/v1/core/sched/scheduler.py", line 762, in schedule
) = self.kv_cache_manager.get_computed_blocks(request)
File ".../vllm/v1/core/kv_cache_manager.py", line 239, in get_computed_blocks
self.coordinator.find_longest_cache_hit(
File ".../vllm/v1/core/single_type_kv_cache_manager.py", line 708, in find_longest_cache_hit
for block_hash in itertools.islice(full_block_hashes, max_length // block_size):
ValueError: Stop argument for islice() must be None or an integer: 0 <= x <= sys.maxsize.
i.e. max_length is negative by the time vLLM's prefix-cache lookup runs — the to-be-rejected request is admitted into stage-1 scheduling with an invalid token length instead of being bounced at the API/validation layer.
Evidence it is deterministic and pre-existing on main
- Build #2919 (
dev/vllm-align@ 05d0926e): failed, and the automatic retry failed identically. - Build #2920 (pure
main@ 5014fea4, same hour/hardware): identical traceback. - The job also appears in the failing list of the earlier main baseline #2906.
Expected
The completions endpoint should reject thinker+talker pipelines with a clean 400 before the request reaches any stage scheduler; whatever validation used to produce that 400 either no longer fires or fires after stage-1 submission.