Three of the four under-load and dogfooding entries are settled, and the fourth records what was tried

This commit is contained in:
Joseph Ferano 2026-09-25 07:24:20 +07:00
parent 04f5d5a349
commit 5477c75909

View File

@ -1631,16 +1631,23 @@ sanitizer flag to it. Named as the check worth adding next; a day rather than an
hour. The x86 backend is not a gap here — that pair is refused by name, because
there is no sanitizer pass over hand-written assembly.
** TODO A transient signal 11 on a globals daemon
Seen once, never reproduced, on a daemon whose fixture had just gained a host
global =Vec= and a run-time-new one. A reproduction under load would settle it.
** DONE A transient signal 11 on a globals daemon
CLOSED: [2026-09-25]
Not a segfault. The report was OCaml's signal number, and in OCaml's numbering
-11 is SIGTERM (SIGSEGV is -10). Nothing in the daemon sends itself SIGTERM, so
it was killed from outside. The test binaries now print a signal by name
(=Test_support.signal_name=); a number from =WSIGNALED= is never printed raw.
** TODO test_dev daemons fail to bind under load
Daemons exiting with status 1 or 2 before binding their socket, across most of the
file at once, while the load average is high. No stale socket or leftover daemon
afterwards; green on a quiet machine. Distinct from the registry race and the
stale-park re-run flake, both of which are fixed. A daemon that dies before it
binds died on the compiler's side, before any program it built has run a line.
** DONE test_dev daemons fail to bind under load
CLOSED: [2026-09-25]
/tmp is a tmpfs, and every session left its =flan-dev-<pid>= build directory
behind (about 8MB; a test_dev run left 300MB). Several concurrent runs filled
it and the daemons after that died on the link with ENOSPC. A session now
removes its directory when it ends through =close=, and each new session
removes the directories of pids that no longer exist. A live pid's directory is
never touched, so a failed build's IR stays until the next session starts.
The half-write test's abort also goes through =aborted= now, which took the
same run down with an uncaught =Wire.Closed=.
** DONE A test binary that hangs is killed by its own alarm
A reader branch that forgets to advance loops for ever and the suite waits as long
@ -1781,13 +1788,20 @@ function of that name. Not reproduced: the file type checks, =flan reload= of
the same form builds, and a minimal =defclass= + =get= + =return= program
compiles. So it is the session path against an installed program, and what is
missing is what that daemon had installed at the time.
Also not reproduced against a live daemon (2026-09-25): an =eval= of the
=defclass=, of a =defn= doing the =get= and =return=, and of both in one form,
and an =eval-expr= of the =get=, all succeed. In a session every installed
function of no arguments returning =()= has the type =(CFn [] ())=, not only
=pause= — a bare =pause= or =tick= asked of the session says so — so the
keyword may not be what resolved. The next report wants the exact form sent.
** TODO A digit does not take the restart RET takes
Pressing =0= left the program stopped; RET on the same line resumed it. Both
end in =flan-cnr-take=, but the digit path (=flan-cnr-take-number=,
=flan-cnr.el:559=) scans from =point-min= for the line whose =flan-cnr-index=
matches and calls =take= inside a =save-excursion=. Not reproduced yet — needs
a non-raylib program stopped under a test daemon.
** DONE A digit does not take the restart RET takes
CLOSED: [2026-09-25]
Evil's normal state binds =0= (beginning of line), =1=-=9= (a count) and RET
above the major mode's map, so the digit never reached =flan-cnr-take-number=.
=flan-cnr-mode-map= is now an Evil overriding map; keys it does not bind stay
Evil's. The other special-mode buffers (inspect, watch, doc, disassembly,
diagnostics, lower) have the same exposure and are not changed.
** TODO Eval in the frame, from the break loop
An expression is evaluated at a frame boundary, so it sees globals and not the