git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/5] test-lib: use individual lsan dir for --stress runs

From
Jeff King <peff@peff.net>
Date
Dec 30, 2024, 04:24 UTC
Message-ID
<20241230042401.GA113400@coredump.intra.peff.net>
In-Reply-To
<20241230042325.GA112439@coredump.intra.peff.net>

When storing output in test-results/, we usually give each numbered run in a --stress set its own output file. But we don't do that for storing LSan logs, so something like:

  ./t0003-attributes.sh --stress

will have many scripts simultaneously creating, writing to, and deleting the test-results/t0003-attributes.leak directory. This can cause logs from one run to be attributed to another, spurious failures when creation and deletion race, and so on.

This has always been broken, but nobody noticed because it's rare to do a --stress run with LSan (since the point is for the code to run quickly many times in order to hit races). But if you're trying to find a race in the leak sanitizing code, it makes sense to use these together.

We can fix it by using $TEST_RESULTS_BASE, which already incorporates the stress job suffix.

Signed-off-by: Jeff King <peff@peff.net>
---
 t/test-lib.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 1a67adb207..96f2dfb69d 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -331,7 +331,7 @@ TEST_RESULTS_BASE="$TEST_RESULTS_DIR/$TEST_NAME$TEST_STRESS_JOB_SFX"
 TEST_RESULTS_SAN_FILE_PFX=trace
 TEST_RESULTS_SAN_DIR_SFX=leak
 TEST_RESULTS_SAN_FILE=
-TEST_RESULTS_SAN_DIR="$TEST_RESULTS_DIR/$TEST_NAME.$TEST_RESULTS_SAN_DIR_SFX"
+TEST_RESULTS_SAN_DIR="$TEST_RESULTS_BASE.$TEST_RESULTS_SAN_DIR_SFX"
 TRASH_DIRECTORY="trash directory.$TEST_NAME$TEST_STRESS_JOB_SFX"
 test -n "$root" && TRASH_DIRECTORY="$root/$TRASH_DIRECTORY"
 case "$TRASH_DIRECTORY" in
-- 
bar
Previous: Jeff KingNext: Jeff King
Message 2 of 11 in “fixing thread races in linux-leaks CI”
  1. 0/5 fixing thread races in linux-leaks CIJeff King, Dec 30, 2024
  2. 1/5 test-lib: use individual lsan dir for --stress runsJeff King, Dec 30, 2024
  3. Jeff KingDec 30, 2024
  4. Junio C HamanoDec 30, 2024
  5. 2/5 Revert "index-pack: spawn threads atomically"Jeff King, Dec 30, 2024
  6. 3/5 thread-utils: introduce optional barrier typeJeff King, Dec 30, 2024
  7. Patrick SteinhardtDec 30, 2024
  8. Jeff KingJan 1, 2025
  9. Patrick SteinhardtJan 3, 2025
  10. 4/5 index-pack: work around LSan threading race with barrierJeff King, Dec 30, 2024
  11. 5/5 grep: work around LSan threading race with barrierJeff King, Dec 30, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.