Skip to content

DAOS-19102 test: Stabilize NLT memcheck testing of Go binaries#18454

Open
mjmac wants to merge 2 commits into
masterfrom
mjmac/go-valgrind-poc
Open

DAOS-19102 test: Stabilize NLT memcheck testing of Go binaries#18454
mjmac wants to merge 2 commits into
masterfrom
mjmac/go-valgrind-poc

Conversation

@mjmac

@mjmac mjmac commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Go 1.25+ includes a new valgrind build tag which instruments the
Go runtime in a way that valgrind can comprehend. Instead of
fighting a constantly losing battle with valgrind, let's work
with it and ditch the unstable suppressions that need to be updated
for every release of the Go toolchain.

This commit introduces scons and Jenkinsfile changes to enable this
build mode for NLT, but keeps the -race build for normal non-release
testing.

Additionally:
By default, NLT runs each test once. Add a --repeat N flag to
allow for multiple iterations to really soak a change. Add a
--failfast flag to allow the loop to be broken if any iteration
fails; otherwise the loop will keep going until the requested
number of loops has completed.

New test pragmas:

  • NLT-repeat: N
  • NLT-repeat-failfast: true

Signed-off-by: Michael MacDonald github@macdonald.cx

@github-actions

github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown

Ticket title is 'Make Go suppressions stable across toolchain versions'
Status is 'In Review'
https://daosio.atlassian.net/browse/DAOS-19102

@daosbuild3

Copy link
Copy Markdown
Collaborator

@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch 2 times, most recently from 97a82a1 to 30ff8b1 Compare June 7, 2026 15:00
@daosbuild3

Copy link
Copy Markdown
Collaborator

@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch 4 times, most recently from cd0c9ff to ee9881b Compare June 8, 2026 17:30
@daosbuild3

Copy link
Copy Markdown
Collaborator

@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch 2 times, most recently from 4835620 to e103c95 Compare June 8, 2026 19:50
@mjmac mjmac changed the title DAOS-0000 test: build Go binaries with the Valgrind tag for NLT memcheck DAOS-19102 test: build Go binaries with the Valgrind tag for NLT memcheck Jun 8, 2026
@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch 2 times, most recently from a66f8fe to c225664 Compare June 9, 2026 01:14
@daosbuild3

Copy link
Copy Markdown
Collaborator

@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch from 82b6e64 to a26398f Compare June 9, 2026 14:43
@daltonbohning

Copy link
Copy Markdown
Contributor

FYI we just landed a suppression that conflicts with this now

@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch from a26398f to 6e21598 Compare June 9, 2026 15:54
…heck

Go 1.25+ includes a new valgrind build tag which instruments the
Go runtime in a way that valgrind can comprehend. Instead of
fighting a constantly losing battle with valgrind, let's work
with it and ditch the unstable suppressions that need to be updated
for every release of the Go toolchain.

This commit introduces scons and Jenkinsfile changes to enable this
build mode for NLT, but keeps the -race build for normal non-release
testing.

Signed-off-by: Michael MacDonald <github@macdonald.cx>
@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch from 6e21598 to 34f2530 Compare June 9, 2026 16:51
@mjmac

mjmac commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

FYI we just landed a suppression that conflicts with this now

Yep, just re-pushed. Should be sorted out going forward. In the second commit, I added a NLT-soak pragma that I used to verify that this really works. It's gone through 20+ iterations.

@daltonbohning

Copy link
Copy Markdown
Contributor

FYI we just landed a suppression that conflicts with this now

Yep, just re-pushed. Should be sorted out going forward. In the second commit, I added a NLT-soak pragma that I used to verify that this really works. It's gone through 20+ iterations.

I think at least 2 people have asked about a way to run NLT on repeat so that's also a nice addition

@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch 4 times, most recently from af0ea51 to 089d39a Compare June 10, 2026 15:44
By default, NLT runs each test once. Add a --repeat N flag to
allow for multiple iterations to really soak a change. Add a
--failfast flag to allow the loop to be broken if any iteration
fails; otherwise the loop will keep going until the requested
number of loops has completed.

New test pragmas:
 - NLT-repeat: N
 - NLT-repeat-failfast: true

Signed-off-by: Michael MacDonald <github@macdonald.cx>
@mjmac mjmac force-pushed the mjmac/go-valgrind-poc branch from 089d39a to 283a0c0 Compare June 10, 2026 20:31
@mjmac mjmac marked this pull request as ready for review June 10, 2026 22:06
@mjmac mjmac requested review from a team as code owners June 10, 2026 22:06
@mjmac mjmac changed the title DAOS-19102 test: build Go binaries with the Valgrind tag for NLT memcheck DAOS-19102 test: Stabilize NLT memcheck testing of Go binaries Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants