mudler / mudler/vllm.cpp

fix: accept proven loader reservations in profiler preflight

Open
#3,090 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
423
Forks
53
Avg merge
20h 26m
Merged PRs (30d)
310

Description

Row: BACKEND-GATE-ROCM-SGLANG

The #3076 controller guard rejects legitimate ELF loader reservation pages at candidate c9ae31fb5e7511b48c54f0f4745dd76fcea11b5b.

Owning spec: .agents/specs/strix-qwen3-4b-c4-performance.md, approved controller-preflight supplement.

Evidence

Strix job dba7164c-bf1f-4a6e-8194-d0e03404fc9d completed Qwen3-4B c4 warmup, then the actual controller preflight rejected unaccounted mapped load instance. No attachment occurred. Model/engine binding checks passed before and after, with identical digest 29f2fe4ecd461b71038ea7e0f79cce4c2ae6ae151f19b068e97ccad9c6b0c126.

The SDK has a file-backed ---p reservation at relative [0x78c000,0x78d000), between its page-rounded RO and RW PT_LOAD segments. The guard currently requires every mapping to fit within one PT_LOAD. All recorded registration mappings satisfy that rule; the SDK reservation deterministically does not. The generic rejection message does not independently identify which constructor emitted it.

A CPU-only single-dlopen fixture linked with -Wl,--build-id,-z,max-page-size=0x200000 reproduces the same rejection through the unchanged public preflight entry at exact c9, with zero forbidden operations. Evidence under the campaign NAS directory: controller-preflight-c9.wLC4Iu/cpu-gap-diagnostic-c9.json, SHA256 986e9bb30543f487dd38dd5ab9b1dc370e83b7ab6272f5e1468fd615a8cd540b.

Loader mechanism reference: glibc2.39 elf/dl-map-segments.h:83-122 reserves an entire shared-object span and marks excess inter-segment space PROT_NONE. This reference is not a claim about the worker's exact glibc revision.

Required repair

Represent strictly bounded loader reservation gaps separately from required segment bytes. Preserve matching backing identity, unique validated load bias, exact reservation offsets, no-access permissions, complete segment coverage, executable symbol checks, and revalidation. Do not broadly ignore PROT_NONE mappings.

Port the CPU reproduction into a red-first public-entry regression. Mutate permissions, gap bounds, offsets, and identity; retain extra-instance and missing-code-page rejection. Fresh review, full gates, and a real Strix preflight are required.

SDK/tool compatibility, attachment-shim readiness, adapter teardown, and accepted throughput remain separate obligations.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .agents/specs/strix-qwen3-4b-c4-performance.md and the unchanged public preflight entry at candidate c9ae31fb5e7511b48c54f0f4745dd76fcea11b5b. Reproduce the failure using controller-preflight-c9.wLC4Iu/cpu-gap-diagnostic-c9.json, then add the requested red-first regression and validation coverage. Done means bounded loader reservations are accepted without broadly ignoring PROT_NONE mappings, while the listed invalid cases remain rejected and the full gates plus Strix preflight pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
operating-systems, security
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.