Issues / #2386

#2386 cannot use strata in opencode through 0.1.44.1 by RTX4090

open · @RNGMARTIN · 1 commentaires · Sur GitHub

BenchmarksSetup & installServer & APINVIDIA / CUDAModels & quantsWindows

Description

Re: "The engine stopped unexpectedly" - OpenCode client
Date: 2026-10-14 (update, supersedes the 2026-10-12 report)
User: RNGMARTIN

Short version: the stall reproduces on 0.1.40.3, 0.1.43 and 0.1.44.1 - every
version I tried. Same stage, same signature, every time. It is not RAM
exhaustion and it is not the client.

====================================================================
1. The line and the 30 lines of the server window before
   "the engine stopped unexpectedly (exit code ...)"
====================================================================

Latest reproduction, 2026-10-14, engine 0.1.44.1, started via START-HERE.bat.
The server window showed, in order:

    [strata] reading the prompt: 588 tokens, 10 s so far
    [strata] reading the prompt: 583 of 588 tokens, 15 s so far
    [strata] thinking: 18 of max 32000 tokens, 22.2 tok/s, 16 s
    [strata] thinking: 37 of max 32000 tokens, 19.3 tok/s, 18 s
    [strata] thinking: 52 of max 32000 tokens, 17.4 tok/s, 19 s
    [strata] thinking: 70 of max 32000 tokens, 17.1 tok/s, 20 s
    [strata] thinking: 94 of max 32000 tokens, 18.2 tok/s, 21 s
    [strata] done: 103 tokens in 21 s (19.0 tok/s) (stop, cancel=False), expert cache 95.0% hit
    [strata] reading the prompt: 8,069 tokens, 10 s so far
    [strata] reading the prompt: 8,069 tokens, 20 s so far
    [strata] reading the prompt: 8,069 tokens, 30 s so far
    [strata] reading the prompt: 8,069 tokens, 40 s so far
    [strata] reading the prompt: 8,069 tokens, 51 s so far
    [strata] reading the prompt: 8,069 tokens, 61 s so far
    [strata] reading the prompt: 8,069 tokens, 71 s so far
    [strata] the engine stopped unexpectedly (exit code 3221226505). The engine stopped
    itself because it had stopped making progress - a hang it caught. Its log line:
    strata serve: no progress for 60 s during a request (reading the prompt (batched):
    layer 1 of the prompt chunk from token 0) - stopping the engine so the server starts
    it again (issue #29)
    [strata] done: 0 tokens in 74 s (0.0 tok/s) (error, cancel=False)
    [strata] the engine had stopped (exit code 3221226505); starting it again ...

The matching engine log (strata-iq2_xs.log, 0.1.44.1, 2026-10-14):

    strata serve: no step finished for 60 s, but the file tier is still being read
    (slow storage or low RAM): waiting up to 600 s in all (STRATA_WATCHDOG_IO_S) (#1407)
    strata serve: no progress for 60 s during a request (reading the prompt (batched):
    layer 1 of the prompt chunk from token 0) - stopping the engine so the server
    starts it again (issue #29)
    strata serve: stall report (engine 0.1.44.1): stage "reading the prompt (batched):
    layer 1 of the prompt chunk from token 0" for 62 s; 0 layers served since the last
    finished step (0 = stopped, more = slow)
      VRAM free when this request began: 1055 MiB
      expert pool: epoch 2860, batch epoch 2860: 48 of 48 jobs claimed, 48 done;
        15 of 15 workers parked, 15 sleeping; mode 0
      expert pool threads: w0=sleeping ... w14=sleeping; host idle for 62235 ms
      verify window (last window, not the current stage): 4 tokens at position 686,
        host at layer step 48; the GPU rang 48; flags: served 48, plan (A) 48, copies (B) 48
      memory: 37855 MiB resident, 60866 MiB committed, 9583 MiB RAM available;
        10662519 page faults so far
      2 s later:
      expert pool: epoch 2860, batch epoch 2860: 48 of 48 jobs claimed, 48 done;
        15 of 15 workers parked, 15 sleeping; mode 0
      expert pool threads: w0=sleeping ... w14=sleeping; host idle for 65076 ms
      verify window (last window, not the current stage): 4 tokens at position 686,
        host at layer step 48; the GPU rang 48; flags: served 48, plan (A) 48, copies (B) 48
      memory: 37855 MiB resident, 60866 MiB committed, 9580 MiB RAM available;
        10662661 page faults so far
      wrote the thread stacks to F:\openresource\Strata-main\strata-stall-32556.dmp
    strata: released the verify window's GPU waits (#267): the GPU finished in 0 ms

Notes:
- exit code 3221226505 is 0xC0000409 (STATUS_STACK_BUFFER_OVERRUN). It is the engine's
  own self-stop path after it caught the hang, not an OOM kill; the Windows System log
  has no OOM event.
- Pattern: the first request of the session (OpenCode's 588-token title request)
  always completes. The NEXT request (the real conversation prompt, here 8,069 tokens)
  hangs at the same stage. My own back-to-back API tests (53, 53, 8,457 tokens right
  after a fresh start) passed on 0.1.44.1 - the repro needs the title request first,
  which is exactly what OpenCode sends.
- The engine log also carries a warning on every start that names the stage:
  "WARNING: --ple-io direct measures slow here (407-455 rows/s, about 2 MB/s of random
  4 KiB reads): a prompt can spend minutes reading layer 1 and trip the stall watchdog
  (#1425, #1629)." The stall sits at exactly that stage (layer 1).
- The #1407 "file tier is still being read" grace was NOT active at the stop: the
  engine decided after 60 s that nothing was being read, and stopped itself.

====================================================================
2. Strata version, OS, GPU and VRAM, total RAM, model
====================================================================

- Reproduced on engines 0.1.40.3, 0.1.43 and 0.1.44.1 (latest release, 2026-10-14).
  Code updated to main each time; the latest test used the 0.1.44.1 release engine.
- OS: Windows 11 Home, Chinese edition, 10.0.26200, 64-bit
- GPU: NVIDIA GeForce RTX 4090 D, 24564 MiB VRAM, driver 610.60
- CPU: Intel Core Ultra 9 285K (no AVX-512; the log says the expert kernels run on
  AVX-2)
- Total RAM: 63 GB
- Model: IQ2_XS (Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS, two GGUF shards, 36.5 + 26.8 GB).
  The log says it "loads about 39 GB into RAM and locks part of it for the GPU".
  An IQ3_XXS pair is also on disk but not used.

====================================================================
3. The command line / config, especially context size and --prefill
====================================================================

Started with START-HERE.bat (menu choice 1 = iq2_xs). Engine command line exactly
as logged:

    strata.exe --serve
      --pack F:\openresource\Strata-data\packs\iq2_xs
      --native F:\openresource\Strata-data\models\IQ2_XS\Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00001-of-00002.gguf
      --ple-gguf F:\openresource\Strata-data\models\IQ2_XS\Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00002-of-00002.gguf
      --expert-profile F:\openresource\Strata-main\data\expert-profile.bin
      --expert-cache auto
      --prefill auto
      --spec 4 --spec-min-p 0.5
      --mtp F:\openresource\Strata-data\mtp\rt
      --max-context 131072
      --kv int8 --kv-resident 32768
      --pool-workers 15 --vram-reserve-mib 1500

So: --prefill "auto" (chooses the batched path, "prompt chunk auto: 8192 tokens"),
context 131072. Server listens on 0.0.0.0:8080 with an API key.
From the start-up log, things that may matter on this machine:
  - "expert arena: cudaHostRegister PORTABLE ok; large pages refused for
    35456548864 B (VirtualAlloc error 1314); using 4 KB pages"
  - "--ple-io direct measures slow here (407-455 rows/s, ~2 MB/s of random 4 KiB
    reads)" with the note that mmap was "40-100x faster on some DRAM-less NVMe
    drives but 7x slower on a SATA SSD (#2040), so it is not chosen for you"
  - "Windows commit: 56.8 GiB left of a 154.4 GiB limit (RAM + page file)"

====================================================================
4. Free RAM while it happens / OOM check
====================================================================

- From the 0.1.44.1 stall report: 37855 MiB resident, 60866 MiB committed,
  9583 MiB RAM available, over 10.6 million page faults so far.
- The 0.1.43 stall (same day as this update) had 14729 MiB RAM available.
  The 0.1.40.3 stall had 5565 MiB available.
- So the stall happens with 5.5, 9.6 and 14.7 GB of RAM free - it is not RAM
  exhaustion.
- Windows has no dmesg; the System event log shows no process killed for lack of
  memory. The exit code is the engine's self-stop (0xC0000409), not -9/137.

====================================================================
5. Does a long prompt (10-20K tokens, OpenCode scale) work from the
   web page / API?
====================================================================

- 9,357 tokens through the API: OK (read in 9.1 s at 1031 tok/s) - 0.1.40.3
- 8,457 tokens through the API: OK (6.6 s total) - 0.1.44.1
- But in the OpenCode flow, the 8,069-token request that follows the 588-token
  title request hangs at layer 1 for over 60 s with zero progress - on all three
  engine versions.
- Conclusion so far: it is not "the prompt is too long" and not "the client times
  out". It is a hang in the engine's batched prefill path, triggered by the request
  sequence (title request, then the real prompt), at a stage the start-up warning
  already flags as slow on this storage (--ple-io direct, ~2 MB/s random reads).

====================================================================
6. Is the engine dying, or is the client giving up?
====================================================================

The engine is hanging and stopping itself (the server's 60 s watchdog, issue #29).
The client (OpenCode) only sees the request error out afterwards. On every
reproduction:
  - all 15 expert-pool workers sleeping, host idle for 60+ s
  - "reading the prompt (batched): layer 1 of the prompt chunk from token 0"
  - "the GPU finished in 0 ms" when the verify window's waits are released
  - a fresh engine then loads (1-4 minutes), and the next request can hit the same
    wall again (15 stall dumps collected, 2026-10-08 through 2026-10-14)


Sur le site

Liens install, modèles, releases.