Commit d384d93
fix(wp): anchor paged weights to pool_buf so view-only leaves get a backend
A paged weight consumed ONLY via a reshape/view (not a direct matmul src)
inherited buffer_id -1 from ggml_backend_sched_split_graph pass 4: the view's
id comes from its view_src (paged leaf, buffer==NULL -> -1), then the src loop
assigns the leaf = the view's still-(-1) id before the view's own fallback runs.
gallocr then asserts buffer_id>=0 on that leaf (before its data!=NULL skip). This
crashed every DeepSeek V4 paged load (wo_a = ggml_reshape_3d(...)->mul_mat), and
recurs for any arch that reshapes weights. Set paged weights' buffer=pool_buf at
init so the scheduler can name a backend; gallocr still skips them (data!=NULL),
eval_cb still re-patches ->data per op. Matches the steady state eval_cb already
creates (it sets ->buffer=pool_buf on every patch). Root-caused via codex+Fable
consults converging on ggml-backend.cpp:1217-1241.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ZRfPpL8XFzk1hep9MMg9P1 parent 3faad72 commit d384d93
1 file changed
Lines changed: 11 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
284 | 284 | | |
285 | 285 | | |
286 | 286 | | |
287 | | - | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
288 | 298 | | |
289 | 299 | | |
290 | 300 | | |
| |||
0 commit comments