|
1 | 1 | ### Fixed |
2 | 2 |
|
3 | | -- **In-process LLVM compiles no longer leak an empty scratch directory per compile.** |
4 | | - `compile_ll_inprocess_in`'s statepoint arm is the only in-process path that |
5 | | - *creates* the per-compile scratch directory — it writes the assembly there |
6 | | - before the compact-map rewrite — but its cleanup removed the two files it knew |
7 | | - about and left the directory. One `perry_llvm_scratch_<pid>_<counter>` husk |
8 | | - survived every compile. |
9 | | - |
10 | | - The clang path has always done `remove_dir_all`, under a comment saying "the |
11 | | - directory cannot survive as an empty husk". Nothing went wrong while clang was |
12 | | - the default; the leak began when the in-process backend became it, and the |
13 | | - cleanup that only ever existed on the other path stopped running. |
14 | | - |
15 | | - This is what turned `repsel-census` red on `main`: the job's Temp-directory |
16 | | - hygiene step reported `58 compile(s) left 58 entries in a temp directory that |
17 | | - started empty`. The leak is counted in *compiles* rather than in distinct IR, |
18 | | - which is what distinguishes it from the earlier `#7144` leak. |
19 | | - |
20 | | - The consequence was larger than a pile of empty directories. Temp-directory |
21 | | - hygiene runs before `Promotion census` and `Sabotage check`, so both were |
22 | | - skipped for every red run — the census gate itself had not executed on `main` |
23 | | - since 2026-08-04. Because `repsel-census` is not a required status check, eight |
24 | | - consecutive red nightlies blocked nothing and nobody was forced to notice. |
25 | | - |
26 | | - The regression test pins the statepoint lowering with `NativeRootsPin::native()` |
27 | | - rather than trusting the host default. Only the statepoint backends route |
28 | | - through assembly, and only that arm creates the directory, so without the pin |
29 | | - the test passes on a host that never enters the arm — the vacuous shape this |
30 | | - repo has been bitten by before. Verified by sabotage: restoring the two |
31 | | - `remove_file` calls turns the test red. |
| 3 | +- **Successful in-process LLVM statepoint compiles no longer leave an empty |
| 4 | + scratch directory behind.** Cleanup now removes the per-compile directory as |
| 5 | + a unit, matching the clang path and preventing temporary-directory growth |
| 6 | + proportional to the number of compiles. A focused regression explicitly |
| 7 | + selects native-root lowering and verifies that repeated compiles leave no |
| 8 | + scratch entries. |
0 commit comments