Repository navigation
Skip a wrong-class candidate in the GL host lookup - #41
Conversation
glfwd_try_soname accepted the first directory in which its own soname existed, and glfwd_each_dir stopped the walk there. A candidate of the other ELF class cannot load, so a host that named a 32bit directory first produced a target the loader refused and the directory after it was never reached. The check compares EI_CLASS against sizeof(void *), so it is the same predicate on every target this project builds. Measured with the five-name miniature of experiments/30-run-tests.sh section O. Built from the pre-fix source, a decoy libtgt.so carrying the other EI_CLASS in the first named directory makes the shim report "no target; all 5 entry points return zero". With the repair it reports the libtgt.so in the directory named second and the probe passes. The same fixture with the real library first still resolves, and a candidate that is not an ELF is still handed to dlopen as before, which is why the predicate is class-specific. E103 is the suite case. docs/report/09-the-second-boundary.md 9.21 has the transcript, and the evidence totals move to 66/66 on x86-64 and 62/62 on aarch64. Refs pkgforge-dev#40.
|
Reviewed at Verdict: correct fix for #40's primary scope. Mechanism verified. No regression measured. The CI at this head, read from the run logs and not from the checks page:
Mechanism review of
Measured A/B. Both arms built from the real
No-regression statement: the last three rows are byte-identical between the two builds, and E1 through E102 are green on both CI rows. The only behaviour that changed is a wrong-class candidate followed by a loadable one, which is exactly the defect. Notes, non-blocking:
Refs #40. |
talaria0101's review of pkgforge-dev#41 notes that v0.2.6 was released from main before this branch, so no released artefact carries the wrong-class skip, and that the work order no longer says so. It does now. Refs pkgforge-dev#41.
|
Thanks. The release note is now in the record: The body wording is fixed to the five-entry Neucom Publishing would file the release as part of the change rather than after it, which is why it is written down now. |
v0.2.8 is published with 40 assets across five architectures. T-18 is closed in place, under its own title, with the acceptance command and its output: `gh release list`, a full `gh release download`, and `sha256sum -c` over all five checksum files, which verifies every asset against the number published beside it. The entry's premise said aarch64 had never been built anywhere. That has been false since v0.1.0: release.yml builds five architectures and runs the evidence table on ubuntu-24.04-arm. The correction is written beneath the premise rather than edited into it, because the title is how the entry is cited elsewhere. INDEX.md moves infrastructure to 6 open and 3 done, totals to 18/1/3, and high priority to 5. The counts were read out of the entries themselves. PROGRESS.md named v0.2.6 as the published release and carried a work order whose first item merged as PR #41 in v0.2.7. It now names v0.2.8, records that v0.2.8 is the first release carrying the ppc64le resolver frame repair, and orders the three things actually left: the unchecked class in glfwd_try_vendor, wiring gl-fwd-qemu-check into a runner, and the remaining stale totals in docs/ground-truth.md. Two things a next session should not re-derive are recorded as distrust notes: the scheduled appimage-suite is red because upstream's demo AppDir no longer carries a dispatcher slot, and the release gate does not run the wide suite at all.
glfwd_try_soname accepted the first directory in which its own soname
existed, and glfwd_each_dir stopped the walk there. A candidate of the other
ELF class cannot load, so a host that named a 32bit directory first produced
a target the loader refused and the directory after it was never reached.
The check compares EI_CLASS against sizeof(void *), so it is the same
predicate on every target this project builds.
Measured with the five-entry tgt-fwd.so table driven by section O's directory walk.
Built from the pre-fix source, a decoy libtgt.so carrying the other EI_CLASS in
the first named directory makes the shim report "no target; all 5 entry points
return zero". With the repair it reports the libtgt.so in the directory named
second and the probe passes. The same fixture with the real library first still
resolves, and a candidate that is not an ELF is still handed to dlopen as
before, which is why the predicate is class-specific.
E103 is the suite case. docs/report/09-the-second-boundary.md 9.21 has the
transcript, and the evidence totals move to 66/66 on x86-64 and 62/62 on
aarch64.
Refs #40.
Requested by Samueru via errand.
Conversation: https://discord.com/channels/1313385177703256064/1552374596500717613