`contract build` can expose an empty wasm to concurrent builds
I maintainer di solito rispondono entro 1 giorno
@leighmcculloch ci sta già lavorando.
Dal 15/10/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
What version are you using?
28.1.0 (main at d95abbc).
What did you do?
Ran two stellar contract build (or contract deploy/upload auto-build) processes at the same time on the same cargo workspace.
Note that this also happens in the auto_build integration tests and causes builds to fail sometimes. e.g. deploy_workspace_with_package_auto_builds in this run.
What did you expect to see?
Both builds succeed, with each reader seeing either the previous complete wasm or the new complete wasm.
What did you see instead?
The second build fails with ❌ error: unexpected end-of-file (at offset 0x0) after cargo reports Finished. Perhaps writing each rewrite to a temp file in the same directory and renaming it over the target could avoid the empty window while still breaking the deps/ hard link, though there may be other options worth weighing.
Thoughts
After cargo releases its build lock, inject_meta and filter_spec in cmd/soroban-cli/src/commands/contract/build.rs each rewrite the output wasm in place with fs::remove_file followed by fs::write, and fs::write creates an empty file before writing the bytes, so another process reading the same path in that window sees zero bytes. The remove-then-write pattern came from #1896 to break the hard link cargo keeps to deps/ (#1694), and the only step that writes to a temp file and renames into place today is --optimize, while the --out-dir copy uses fs::copy, which is also not atomic.
The file would not exist as a zero length file for a brief period if it was written to a temp directory, or with a random filename in the current directory, then renamed into place after the write is complete. So this is probably the ideal fix.
- Lingua principale
- Rust
- Stelle
- 129
- Fork
- 153
- Merge medio
- 1g 14h
- PR unite (30g)
- 11
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di stellar/stellar-cli
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
stellar/stellar-cli#2887 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
stellar/stellar-cli#2880 ·
I maintainer di solito rispondono entro 1 giorno
-
arg_value_union panics on zero-arity union tuple case (unchecked type_[0] index)Forse già presa @hvoi l’ha presa 22 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
stellar/stellar-cli#2806 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
contract extend panics on single-change resultMetaXdr (index out of bounds at extend.rs:306)Forse di nuovo libera @duongynhi000005-oss l’ha presa 18 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
stellar/stellar-cli#2796 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Document stellar-cli's RPC trust boundaryForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
stellar/stellar-cli#2781 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di stellar/stellar-cli
Issue simili
-
feature request good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
TabularisDB/tabularis#1513 ·
I maintainer di solito rispondono entro 2 giorni
-
bug priority: medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
storytold/pdfcraft#7140 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
bug duplicate priority: low ui
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
storytold/vectorcraft#6956 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
PDF export issueApertabug priority: medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
storytold/designcraft#2712 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni