Skip to content

supervisor: a member that clobbers a callee-saved register runs in a worker of its own - #366

Open
linuxnow wants to merge 2 commits into
mainfrom
feat/abi-clobber-isolate
Open

linuxnow wants to merge 2 commits into
mainfrom
feat/abi-clobber-isolate

Conversation

@linuxnow

@linuxnow linuxnow commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

From omx-clap-host 0.26.2 (omx-clap-core#449), a worker saves and restores the callee-saved registers around every plugin call. When a plugin returns with one changed, the worker writes abi_clobber <instance> <mask> <registers> <call> <block> once on its feedback port. Its own frame is whole after the restore. The other members' state in the same process is not covered, so the ruling is: such a plugin runs only in a worker of its own.

The daemon now acts on that line:

  • Relay: keeps the instance number of each abi_clobber line for the supervisor. The line still goes to the controller as written.
  • Tick: quarantines the instance (instance_quarantined, and the history keeps it alone from then on).
    • If it shares its worker or is in a chain, it moves to a worker of its own (to_own: checkpoint, remove, respawn) with its state.
    • The other members stay in the same process.
    • One already alone is only marked, and is not moved or announced again.
  • Docs: abi_clobber is declared in the events table, with README and protocol JSON regenerated.

Red first: 4bbfd2b. The fake host's param_set <n> abi_clobber 1 writes the worker's line. The test pools three members and makes one report:

  • before the change it timed out on instance_quarantined;
  • now that member runs alone with its gain kept, the pool keeps the other two in the same pid, and a second report while alone moves nothing.
  • Full daemon suite in the worker image: ok, 0 failed.

…orker of its own with its state; one alone is only marked, red
… it to a worker of its own with its state when it shares one; the relay keeps the instance for the tick

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant