Repository navigation
probe: run the CLAP prober under the interposer beside it (#109) - #114
Merged
Merged
Conversation
The LV2 measurement ran under plugin-qualify's rt_interpose.so, the file of that name beside the child, but the CLAP prober ran with no interposer. Its line then said rtSafety interposer false with no counts, and plugin-qualify judged every CLAP plugin measured through the runner unknown, hosting.rt-safety.unmeasured. Both children now get the interposer from one lookup. A child given as a bare name is looked for on PATH, as execvp finds it. The run names the interposer only when the child says it counted under it. When no interposer is beside the child, or the one preloaded did not load, the rt-safety step is probe.not-attempted and says which. A note sweep's counts are copied only when the interposer took them, and a sweep played without one is not-attempted with the same reason, where it used to read probe.ok with no counts.
…109) The fake CLAP child reported interposer false always and printed note sweep counts as if counted. It now looks for the stub's symbol, as clap-qualify looks for the interposer's own. Under the stub it prints rtSafety counts. Its note sweep prints counts either way, so a runner that copies counts no interposer took is caught. New tests: the child runs under the interposer beside it, a bare child is found on PATH, a child with none beside it is unmeasured and says why, and an interposer that does not load is not named. With PLUGIN_QUALIFY_BUILD, the real prober runs over omx-contract's floor rates. rt-safe.clap and synth.clap must read 0 allocations, rt-unsafe.clap must read more than 0, and synth-alloc.clap must read more than 0 under the note sweep.
The CLAP prober started without the interposer, a bare child not looked for on PATH, the allocations a CLAP point drops, note counts kept when the interposer did not take them, an unmeasured rt-safety that does not say why, and an interposer named although it did not load: each turns its test red. The LV2 interposer and stimulus entries follow the shared lookup. make sabotage builds the CLAP fake child and the stress plugin it runs.
The measured child gets the interposer and nothing else, since another malloc interposer would hide its allocations. The runner used to overwrite LD_PRELOAD for the child without saying so, then unset it in its own environment. Now a preload the runner was started with is named in run.tools.droppedPreload and in the rt-safety step, and the runner's own LD_PRELOAD is put back after the child. A preload that is the interposer itself, as plugin-qualify starts the runner, is not called dropped. README and the man page say this, and say how a bare --child is found: as execvp finds it. Name the child by path when PATH is unset or holds a directory of its name.
…orded (#109) The fake CLAP child writes its environment where PROBE_CHILD_ENV says. The new test starts the runner under a foreign LD_PRELOAD. The child must get only the interposer beside it, or no preload when there is none, and the CLAP and LV2 records must name what was dropped. The interposer itself, already preloaded, must not be called dropped. Four sabotages go red on it: the child keeps the foreign preload, the drop is not recorded, it is left out of the run's tools, and the interposer is called dropped. The LV2 and CLAP "runs without the interposer" entries now cite the call sites of the shared function, and the unmeasured-reason entry cites the new detail.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #109
What changes.
plugin-hostd-probe runnow starts the CLAP prober under plugin-qualify's interposer, using the same rule the LV2 measurement uses:rt_interpose.sobeside the child goes intoLD_PRELOAD. One lookup serves both children. A--childgiven as a bare name is looked for on PATH, as execvp finds it.What the record says.
run.tools.interposernames the interposer only when the child says it counted under it.With no interposer beside the child, or one that did not load, rtSafety is
{"interposer": false}with no counts. Thert-safetystep isprobe.not-attemptedwith the reason:no rt_interpose.so beside the child in <dir>,<child> is not on PATH, ..., or<path> was preloaded and the child says no interposer was loaded.A note sweep's counts are copied only when the interposer took them. A sweep played without one is
probe.not-attemptedwith the same reason. Before this change it readprobe.ok"counts are totals" and carried no counts.A preload the runner had is dropped for the measured child. The child gets the interposer and nothing else. The dropped value is named in
run.tools.droppedPreloadand in the rt-safety step ("dropped LD_PRELOAD= for the measurement"). The runner then puts its own LD_PRELOAD back. A preload that is the interposer itself is not called dropped.A bare
--childis found as execvp finds it. README and the man page say to name the child by path when PATH is unset or holds a directory of its name.Proofs (omx-contract ORACLE_FLOOR_RATES 44100, 48000, 96000, 192000; plugin-qualify origin/main b384573 native/build;
plugin-qualify judge, host openmixer-console)Tests.
make test(176 ok),make test-jack(11 ok, both LV2 steps ran),make sabotage(197 caught, 0 survived) andmake private-refsare all green.Codes: none.
run.tools.droppedPreloadis a new free-form tools entry, which the schema's additionalProperties string already allows. No hosting.* code is added or changed, and no probe-output enum or schema changes. The runner uses the existingprobe.okandprobe.not-attempted.