vllm-project/vllm-omni

[Bug]: Talker EngineCore crashes with islice ValueError instead of rejecting completions API for thinker+talker models

Fechada

#5.495 aberto em 28 de jul. de 2026

 (3 comentários) (0 reação) (1 responsável)Python (1.067 forks)github user discovery
bughelp wantedmedium priority

Métricas do repositório

Stars
 (4.990 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

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.

Guia do colaborador