R.3

Incident index

The failures this manual tells as stories, with their symptom, their cause, their fix or status, and the section that explains each one.

The sections use real incidents as evidence. Each one comes from an SGLang or Miles issue, a pull request, a field report, or our own capture. This index lists them by part, so you can search it with a symptom you see in your own logs. A status of open or closed was checked on 2026-10-16.

Our capture

IncidentSymptomCauseFix or statusSection
Out of memory at concurrency 32 (log)Metal reported Insufficient Memory, and the whole server process tree exitedThe pool took 87 percent of the free memory that startup saw--mem-fraction-static 0.43.2
--disable-overlap-schedule on MLX (log)RuntimeError on the first real batch, then the server exited through SIGQUIT and killed its process treeThe path without overlap still calls FutureMap.stash with tensors on two devicesOpen at 0.5.22. Keep overlap on2.4
Process-group SIGTERM (log)The log reports a crash at shutdownThe scheduler child died first, so the parent took the crash path without a drainSend SIGTERM to the main process only7.1
Memory guard on a GB10 (record)Startup stopped while the scheduler allocated the KV pool. We did not keep the server logs of those startsA guard daemon of the machine stopped the scheduler, which grew up to 36.7 GiB in 5 sStop or configure the guard for the server3.2
Driver NV_ERR_NO_MEMORY on a GB10 (record)Bursts of driver out-of-memory lines in the kernel logThe bursts fall on 2026-10-16, the day of our first starts. We did not keep the server logs of that day, so we cannot match each burst to one startEvery server in our later captures became healthy. Alert on health, not on this line3.2
pip install on an L4 host with no CUDA toolkit (record)Four failed starts: Python.h, nvcc, FlashInfer headers, then -lcudartKernel compilers at startup need a complete toolchainUse the image or a host with a full CUDA toolkit7.1
Benchmark with HF_HUB_OFFLINE=1, log not keptThe random dataset failed with every model on diskThe dataset downloads ShareGPT from the Hugging Face Hub--dataset-name random-ids or a local --dataset-path7.1
--chunked-prefill-size 8192 on an L4 (record)Startup ended with a PyTorch INTERNAL ASSERT FAILEDThe prefill graph for 8,192 tokens needed more than the 2.33 GB that the KV pool leftKeep the default chunk of 4,096 on a 24 GB card2.2
--tp-size 2 with a shared second L4 (record)RuntimeError: The memory capacity is unbalanced at startupTwo pods of another user held 3.5 GB of the second GPUUse GPUs that nothing else holds, or one GPU6.1
Prefill and decode on two L4s over TCP (record, summary lines)The benchmark counted every request as a success, with 0 retokenized output tokens and a mean TTFT of 0.00 msThe transfer queue to a small decode pool filled, and the transfer session failedRead Total generated tokens (retokenized) in every disaggregated benchmark6.3
vLLM FlashInfer sampler on the L4 (record)Engine core initialization failed after a JIT buildThe CUDA compiler and the CUDA toolkit headers in the install did not matchVLLM_USE_FLASHINFER_SAMPLER=0 for a greedy benchmark5.3
Miles with --attn-implementation triton (log)ValueError: Specified attn_implementation="triton" is not supportedThe trainer side does not accept the Triton backendUse a contract that both sides support7.2
Miles true on-policy on a GB10 (log)SGLang stopped with the FA3 SM assertion, then the job logged about 200,000 503 errors over 63 minutes and never failedFA3 accepts SM 8.0 to 9.0, and the rollout loop retries a dead engineWatch the SGLang log, and check the contract kernels for your GPU7.2
GB10 shutdowns under Miles load (record)The machine shut down three times on 2026-10-18The logs do not record a causeA script pauses the container when the GPU reaches 84 C7.2
EAGLE-3 draft for Qwen3-30B-A3BStartup refused: the target context length of 262144 is greater than the derived 2048The draft config declares 2,048 positionsSGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1, as the SGLang cookbook sets it. The Qwen3-8B draft declares 40,960 positions and starts without it4.4
Thermal throttle in an L4 sweep (record)CUDA graphs showed no gain, and seeds of one point differed by 49 percentGPU 0 ran at 87 °C and 360 MHz of 2,040 MHz, with thermal slowdown activeRecord GPU clocks and temperature with every run5.1
Temperature 0 on a default server (log)2 different answers in 5 identical requests on a GB10Not isolated in our runs--enable-deterministic-inference gave 1 answer in 54.6

Part 1 and Part 2: the request path

IncidentSymptomCauseFix or statusSection
LinkedIn field report, 2026-02P99 latency of seconds on small ranking modelsTokenization, ZMQ messages, garbage collection, the GIL, and the schedulerBatch tokenization, a scoring path, and gc.freeze after warm-up (pull request 9241)1.2, 2.1
#36889--max-running-requests 8 accepted, but throughput flat at 2 streamsThe Mamba state cache capped running requests to 2Only an info line reports the cap2.2
#8463KV cache pool is full. Retract requests. again and again, then failed health checksRetraction could not free enough memory and repeatedClosed without a fix. At 0.5.22 the scheduler aborts the last request2.3
#26248Decode fell from about 429 to 20 to 38 tokens per second after a retractionNot recordedClosed for inactivity2.3
#14972Allocation failure after KV cache pool is full at 94 percent usage, with overlap onRetraction did not account for requests that finish one step laterPull request #15626 closed without merge. The 0.5.22 scheduler handles it2.4
#34740Detokenization work grew with the square of the output lengthByte tokens that never complete a character never advance the offsetsOpen2.5

Part 3: the KV cache

IncidentSymptomCauseFix or statusSection
#39675Out of memory on the first prefill on Apple MPSUnknown capacity made the fraction 0.95Set --mem-fraction-static3.2
#42510The draft pool allocation failedDraft-model copies stayed in memory while the target pool was sizedReported3.2
#6027A 64K-token DeepSeek-V3 prompt ran out of memory in attentionThe log reported room for 274,934 KV tokens, and attention still ran outLower the fraction3.2
#43201Older posts describe a ChunkCache class that no longer existsThe class was deleted on 2026-10-08--disable-radix-cache builds a disabled UnifiedRadixCache3.3
#32459Deep-prompt hit rate fell from 97 to 40 to 53 percent with EAGLEThe extra KV for speculation forced the tree to evict promptsMeasure the hit rate with each feature you add3.3
#35129Hit rate of 66.8 percent, and HiCache load-back evicted other sessionsA random hash and a rotating message in the system prompt, and load-back with no roomPrompt edits moved the hit rate to 94.4 percent3.4, 3.5
Jarvislabs field report, 2026-0823 percent of input tokens computed againRequests went to servers without their prefixOne header pinned each conversation to one GPU: 64.7 to 92.1 percent hits3.4, 6.4
#30760One tensor-parallel rank waited forever in a prefetch check while the others moved onNot recordedReported3.5
#42465Bursts of 540,000-token prompts hung every rank with HiCache onNot recordedThe same prompts run without HiCache3.5
#39830Fluent answers to a different prompt on 20 of 20 host-tier hitsA HiCache host-tier hit on a hybrid linear-attention modelTest hybrid models before you trust the cache3.6
#22935An identical prompt reused no tokensA node split created a node with no Mamba stateRead #cached-token for repeated prompts3.6
#37834Hit rate fell from 88.2 to 65.9 percent, and TTFT rose from 226 ms to 1,063 msAn option forced the no_buffer Mamba strategyKeep --mamba-radix-cache-strategy auto unless you measured better3.6
#36131Lower single-stream decode for hybrid SWA modelsA new default freed SWA slots outside the windowReported3.6

Part 4: each forward pass

IncidentSymptomCauseFix or statusSection
#23769DeepSeek-V4-Pro-FP8 exited during graph captureWith attention data parallelism, the graph batch size counts per rankA smaller graph batch size or a lower fraction4.1
#36478disable_piecewise_cuda_graph=True raised TypeError in the Python APIPull request #23906 moved the field into the per-phase graph configcuda_graph_backend_prefill="disabled"4.1
joshua8.ai field report, 2026-01SGLang ran on an SM120 card only in eager mode, and NVFP4 did not runNew architecture supportCheck capture and the weight format before you compare engines4.1, 4.3
#17411Median ITL on H20 went from 39.44 ms to 283.52 msFlashInfer 0.6.1 regressed the Hopper attention kernelSGLang made fa3 the Hopper default4.2
Cloudflare field report, 2026-08A BF16 KV cache ran out of memory at concurrency 64The cache did not fitAn FP8 KV cache held twice the tokens3.1, 4.3
Pivot News summary, 2026-05A mixed cluster crashed when RTX 4090 cards joinedThe FP4 path required compute capability 10.0No software path for older cards4.3, 5.3
#5274EAGLE-3 lowered throughput at concurrency 20 from 217.8 to 164.4 tokens per secondSpeculation spends compute that a full batch needsRun speculation at small batch4.4
#6783Acceptance fell to 1.2 tokens at 10K inputThe draft config had 2,048 positions and no rope scalingAdd rope scaling and 131,072 positions to the draft config4.4
David Noel Ng field report, 2026-08Acceptance of 1.3 to 1.8 tokens on DeepSeek-V4-FlashThe draft loader did not map the shared expert weightsPull request #332764.4
#37707A string field accepted values shorter than its minLengthxgrammar dropped the rule when the field also had a patternOpen4.5
#38863Bitmask CPU time grew with output length under speculationA rollback method copied a debug list on every callOpen4.5
#43055gpt-oss-20b gave different greedy outputs in prefix modeThe deterministic Triton kernel aligned KV tiles to the trimmed prefixOpen4.6
#43413, #36174, #31261Deterministic mode does not cover Mamba2 hybrids, DeepSeek-V4, or Qwen3.5Architectures without batch-invariant kernelsNot yet supported4.6
#39597Greedy text changed after a restart with DFLASHFlashInfer autotuning picked other kernel tactics--disable-flashinfer-autotune or deterministic mode4.6

Part 5: measuring

IncidentSymptomCauseFix or statusSection
#319613 tokens per second for DeepSeek V3 on eight H200 GPUsThe script counted words and included TTFT in the rateMeasure with the benchmark client5.1
sglang:utilizationThe gauge reads 0 on a busy serverA regression that the code comment links to #22713Use the queue and latency series5.2
#35884Failed health probes added loadA timed-out /health call did not cancel its requestTreat a failing probe as one symptom5.2, 7.1
#22511"health check failed" under high load on GLM-5No output reached the detokenizer for 20 s under loadUse /ready for readiness5.2, 7.1
AIMultiple, 2026-01"SGLang 29% faster" repeated by at least five postsOne offline test that lists SGLang v0.2.3Ignore results without a version1.3, 5.3
vLLM discussion #17221SGLang appeared to use 7 GB against 21 GBThe wrong flag: --context-length matches --max-model-lenCompare engines with matching flags5.3

Part 6 and Part 7: fleets and operations

IncidentSymptomCauseFix or statusSection
#19953Attention data parallelism across nodes hung on its first messageA ZeroMQ socket bound without IPv6 for an IPv6 --dist-init-addrA fix was proposed. We could not confirm the merge6.1
#9787One prefill GPU went idle, then every prefill process crashedImbalanced routing sent too many tokens to one GPU in DeepEP dispatchSmaller chunks, a tuned expert placement, and EPLB6.2
#12591TTFT with disaggregation was higher than on one serverAn old Mooncake transfer engineUpgrade Mooncake6.3
#9266"Prefill bootstrap failed" at 64 concurrent requestsThe router timeout for the prefill client was too shortPull request #98036.3
#9926"Aborted by AbortReq" errorsThe client or the router abortedCheck timeouts before the transfer6.3
Novita AI field report, 2026-01TTFT got much worse with disaggregation and overlapThe KV transfer waited for the next kernel launchTheir flag is not in the 0.5.22 code6.3
#22095A two times throughput regression on GB200 NVL72The router outside SGLang changed versionPin and benchmark the router with the engine6.4
#10608"Failed to select prefill/decode worker" with cache_awareRouting with disaggregation and Kubernetes discoveryUsers switched to round robin6.4
CERIT-SC field report, 2026-04Tool calls in reasoning output, rare hangs, and loops that held KVAgentic traffic with very long promptsA 32K output cap and a presence penalty7.1
Doubleword field report, 2026-04A cold start of 695 s531 s of weight loading and cold kernel cachesPersistent caches and a process checkpoint: 9.6 s7.1
radixark/miles#860/release_memory_occupation did nothing for sliding-window modelsThe SWA pool turns the memory saver offOpen7.2
radixark/miles#1485down_proj outputs differed at tensor parallel 2The two engines summed BF16 partial results in different ordersOpen7.2
radixark/miles#3714Weight transfer failed with Message truncatedDeterministic serving pinned the NCCL channel limit to 8, and the trainer used 24Open7.2
radixark/miles#3277New MoE routes next to old log probabilities after a retractRe-prefill under new weights overwrote the recorded routesOpen7.2

SGLang 0.5.22 · baa9bef · 2026-10-13 · Edition 2026.10