The half-write test reports a session that closes under a question as a failure instead of ending test_dev

This commit is contained in:
Joseph Ferano 2026-09-25 22:24:08 +07:00
parent e0f71bba9c
commit 285bb1047f
2 changed files with 7 additions and 7 deletions

View File

@ -1789,12 +1789,6 @@ crashed session keeping its directory.
The fork pool is drained before anything reads the failure count, and a nonzero The fork pool is drained before anything reads the failure count, and a nonzero
count is an exit status. A red row used to be able to print and pass. count is an exit status. A red row used to be able to print and pass.
** TODO test_dev dies on Wire.Closed after the half-write abort
Intermittent, on an unmodified tree too: the =--llvm= half-write daemon in
=test_dev.ml='s =half_written= sometimes exits before it replies to =abort=, and
=request= raises =Wire.Closed= uncaught, so test_dev ends with a fatal, no =FAIL=
line and every later row unrun.
** WAIT An x86 dev session's read of a dyn global after an allocating thunk failed once ** WAIT An x86 dev session's read of a dyn global after an allocating thunk failed once
WAIT on a recurrence; the test now prints the failing read's own reply. WAIT on a recurrence; the test now prints the failing read's own reply.
The one failure's message came from a second read, which said "kept"; the failing The one failure's message came from a second read, which said "kept"; the failing

View File

@ -7034,6 +7034,9 @@ let () =
:: _); _ } -> n :: _); _ } -> n
| _ -> "" | _ -> ""
in in
(* A daemon that goes away mid-question is a failure named here, not
a [Wire.Closed] that ends the binary with every later row unrun. *)
(try
if not (await (fun () -> inside () = "in-local")) then if not (await (fun () -> inside () = "in-local")) then
fail "%s: the program never stopped inside the local's assignment" flag fail "%s: the program never stopped inside the local's assignment" flag
else begin else begin
@ -7072,7 +7075,10 @@ let () =
(String.concat ", " (String.concat ", "
(List.map (fun (n, ty, v) -> n ^ " " ^ ty ^ " = " ^ v) got)) (List.map (fun (n, ty, v) -> n ^ " " ^ ty ^ " = " ^ v) got))
end end
end; end
with (Wire.Closed | Unix.Unix_error _) as e ->
fail "%s: the half-write session ended under a question: %s" flag
(Printexc.to_string e));
(* No [close]: the program is stopped with nothing left to resume into, (* No [close]: the program is stopped with nothing left to resume into,
so the way out is the abort, and the daemon follows the program. An so the way out is the abort, and the daemon follows the program. An
abort is refused by a program that is *running*, which is what a abort is refused by a program that is *running*, which is what a