[BUG] Standalone service build can succeed without its declared entry point #2
Labels
No labels
bug
ci
docs
duplicate
enhancement
help wanted
invalid
performance
phase-6
question
refactor
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
erix/vfsd#2
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The standalone vfsd freestanding CI command omits the existing service linker
script. On selected Rust 1.97.1, it returns Cargo success despite a missing-entry
linker warning; the retained ELF has entry address zero and lacks
vfsd_entry.This does not satisfy the intended warning-free static link check.
Reproduction
Use vfsd commit
fdd7db1a4f17c5f0688ad6c2c6a5c3d94b8a2731with its unchanged manifest-selectedGit dependency revisions. Prepare original Cargo sources using published
Integration
e2b1cf5995bcf6334839cda9a013e90fa97787d5, select Rust 1.97.1,and run from the repository:
An explicitly selected output directory was used for the retained local run;
adjust inspection paths to the selected output root. This is an original-source
host-side link reproduction, with no guest, image profile or VM execution.
Expected and actual behavior
Expected: the standalone final link selects the repository's existing
linker.ld, which definesENTRY(vfsd_entry)and__vfs_state_arena_start.A linker warning must make the warning-free build fail.
Actual: the existing workflow invokes
cargo buildwithout the script. Thelinker searches for
_startand reports that it cannot set the entry address.Rust 1.97.1 notes that the linker-message lint ignores
-D warnings; Cargoreturns zero. The retained ELF entry is zero and
vfsd_entryis absent.The proposed correction uses
cargo rustc --bin vfsdwith the existing scriptand
--fatal-warningsfor the final link. Production Rust, service capabilities,manifest pins and the runtime feature selection are unchanged. The later provider-read frame step already supplies linker.ld for its runtime/smoke PIC artifacts. That step is outside this omission and remains unchanged.
Environment and identity
fdd7db1a4f17c5f0688ad6c2c6a5c3d94b8a2731.e2b1cf5995bcf6334839cda9a013e90fa97787d5; all external Cargo package IDsretain their original full Git revisions. The selected workflow itself still
pinned the earlier helper
44f51633e571d6f76cb6df49008880d8a69909ce.8bab26f4f68e0e26f0bb7960be334d5b520ea452; Cargo 1.97.1, commitc980f4866141969fab6254a680546a277789d6f0.x86_64-unknown-none, default features plusvfsd-runtime, offline Cargo, original Git objects and no path patches.reproduction. No historical CI warning or artifact behavior is asserted.
Evidence and prior checks
The first original-source run returned zero with the missing
_startwarningand a zero-entry ELF. Both the complete process logs/status and original ELF are
retained. ELF SHA-256:
138d93337492c8fba7cd3e919dc998a663fea56e412f0d575c53792d158beaa3.The caller enforced a 600-second hard limit, 120-second output-stall limit and
32 MiB output budget; the run completed in 6.07 seconds.
Every selected component and dependency source file was compared with its
original Git blob before validation of the proposed correction.
The related e2fsd standalone link issue
records the same command omission in that component. Passing a host test or
static link does not establish service startup or explain the quota VM timeout.
Tracking
Owner: vfsd standalone CI configuration. Preserve original failing receipts.
Acceptance requires strict formatting, Clippy, unit and rustdoc checks plus
warning-free runtime/smoke/all-feature debug/release links whose ELF entry
equals
vfsd_entry. Runtime/smoke links must retain__vfs_state_arena_start.The optimized all-feature force-fail probe stops before arena initialization;
its unused conditional symbol may be absent while
.vfs_state_arenaremains.Deliberately omitting the script with fatal warnings must fail. Static links use placeholder deployment
capacities; packaged dynamic-service and guest runtime acceptance remain
separate. Corrected host default/all-feature tests pass 136 tests per configuration;
strict host/freestanding Clippy and rustdoc pass. All six corrected links have
the expected entry; ordinary runtime/smoke links retain the arena symbol.
The original overbroad all-feature release symbol assertion is retained and
classified separately. Omitting the script with fatal warnings returns 101.
The correction is published at
e8fab347cdcec8a3f6a58e4f5522166059de4fd4in WIP PR #3. Current-revision CI remains a separate gate.