From 5477c759090739a3ea8ae4611031be9624adbbee Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Fri, 25 Sep 2026 07:24:20 +0700 Subject: [PATCH] Three of the four under-load and dogfooding entries are settled, and the fourth records what was tried --- TODO.org | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/TODO.org b/TODO.org index fcf9257b..148b42ed 100644 --- a/TODO.org +++ b/TODO.org @@ -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-= 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