diff --git a/issues/build/a-compiler-fixtures-git-commit-could-not-create-a-temporary-file.md b/issues/build/a-compiler-fixtures-git-commit-could-not-create-a-temporary-file.md new file mode 100644 index 0000000000..b242d3a448 --- /dev/null +++ b/issues/build/a-compiler-fixtures-git-commit-could-not-create-a-temporary-file.md @@ -0,0 +1,28 @@ +--- +status: open +kind: tooling +opened: 2026-09-29 +--- + +# A compiler fixture's git commit could not create a temporary file + +`src/compiler.rs`'s `a_missing_primary_record_is_refused_and_builds_nothing` +went red in 1 of 200 full runs of the toyos-build lib test binary at +`e3a1cdc8`. Those runs went beside a `cargo test --workspace --exclude +toyos-build` loop as host load, with the 1-minute load average at 62.82 for +that run. The fixture's own git failed, not the code under test: + + panicked at src/compiler.rs:373:9: + git ["commit", "-qam", "a target"] in $TMPDIR/toyos-tmp-4827-0/compiler-record-29/fork-src: + error: unable to create temporary file: Invalid argument + fatal: failed to write commit object + +The other 199 runs passed. Nothing has measured why git's temporary file in +that repository's object store failed with EINVAL. No host-test counterpart of +`src/redlist.rs` disables the test, so every `cargo test -p toyos-build --lib` +still runs it. + +## Exit condition + +The EINVAL is traced to a cause the test can rule out by construction, and a +loop of 200 loaded runs shows the test green each time. diff --git a/issues/diagnostics/a-first-dial-turned-away-before-a-line-is-waited-on-to-its-callers-bound.md b/issues/diagnostics/a-first-dial-turned-away-before-a-line-is-waited-on-to-its-callers-bound.md new file mode 100644 index 0000000000..b3652fc5b9 --- /dev/null +++ b/issues/diagnostics/a-first-dial-turned-away-before-a-line-is-waited-on-to-its-callers-bound.md @@ -0,0 +1,35 @@ +--- +status: open +kind: tooling +opened: 2026-09-28 +--- + +# A first dial turned away before a line is waited on to its caller's bound + +`src/metaltalk.rs`'s `serve` never asks a first dial again when its +connection closes before a line (`again` is false), and it records no +`unopened` for it. So `Stream::wait_for_connection` still reads the stream as +dialling (`state.unopened.is_none()`) and waits out its whole `by`. Its doc says +it returns "once the dial asked for it ended with none". Through QEMU's +forward that close is the only sign the guest refused, and each caller then +names the wrong thing, late: + +- `metalswap::swap` says "no boot opened the record stream within N s" once + the whole window has passed. +- `tests/common/logstream.rs`'s `reader` says "the stream never opened" once + `CEILING` has passed. +- `converse` waits `FOREVER` and returns only at the metal loop's `give_up`. + +The close itself is recorded in `end`. + +Measured: a mutation of +`a_refused_first_dial_is_asked_again_up_to_its_ceiling` hands its first dial +to a listener that accepts it and closes it before a line. That test's +`wait_connected(5 s)` returned `None` after 5.02 s, and `unopened()` was still +`None`. + +## Exit condition + +A first dial whose connection closes before a line ends `wait_for_connection` +at once, and `unopened` names the close. A host test stages that close +through a listener it owns and accepts on, and fails on the base.