mudler / mudler/vllm.cpp

fix: reap the Strix adapter resource tracker before exit

Open
#3,108 14 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

Parent and owning scope: #3053. Owner: current Strix campaign operator. Performance campaign: #3076.

Diagnostic job 5a78caa8-ee66-4ccf-b9e1-6572464af54e completed Qwen3-4B c4 warmup and the actual controller preflight, but the unchanged Adapter.close process-group gate failed. Instrumented snapshots before and after the real killpg(group,0) show only resource-tracker PID83808/starttime8526239, already Z with PPID1 and no device descriptors. EngineCore83809 was absent by shutdown acknowledgement. Cleanup SIGKILL did not change the zombie. This classifies this observed run only; snapshots perturb timing.

Evidence: campaign NAS teardown-observation-3053.qBJJHR/shutdown-timeline.json, SHA256 5e6103e4fbc2e61cead0b04ba762615bd0dce4b60696745664b8b4a56610efc1. Exact recovered venv source provenance is retained in venv-lifecycle-sources.RdbAqT, Python3.12.3, base_prefix /usr. resource_tracker.py SHA256 b0099f5e2285fe2462b77c47bbf29220b57c778741a34f386c10c1e9940884c8; util.py SHA256 6752c4515ec69f82e9df64e017da490c3754e51d818c270ea1ad2d64e09268be.

Required fix: establish terminal adapter-parent ownership and reap its resource tracker before successful acknowledgement/exit. Complete engine cleanup and tracker-using finalizers first. Preserve the existing absent-process-group gate, real live-survivor failures, bounded controller timeout, and original exceptions. Do not ignore zombies, reap foreign children, blindly call a blocking private method before its pipe users finish, or change model/runtime numerics.

Commit a dedicated lifecycle spec before fresh test-first implementation. Enter the real adapter CLI using public engine doubles and a real multiprocessing tracker. Cover owned tracker, no tracker, repeated terminal cleanup, shutdown errors, live pipe holders, late finalizers, foreign/inherited ownership and real survivor refusal. Independent mutation review must delete the production reaping call and retain the failing original group gate. Operator repeats full verification and real Strix shutdown validation. No benchmark acceptance is implied.

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 at the real adapter CLI and inspect the retained resource_tracker.py and util.py provenance alongside the shutdown timeline. Add the dedicated lifecycle spec first, using public engine doubles and a real multiprocessing tracker, then run the full verification. Done means the listed ownership, cleanup, error, pipe-holder, finalizer, foreign-child, and survivor cases are covered without changing numerics or existing gates.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
backend, testing-qa
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.