From: Simon Heimlicher Date: Sat, 24 Jan 2026 14:41:29 +0000 (+0100) Subject: resources: Fix race condition in test helper X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=48566b6f37dac88dfe975db7ae7f6e97fd296644;p=brevno-suite%2Fhugo resources: Fix race condition in test helper The fetchResourceForSpec function was reusing a single ReadSeekCloser across multiple goroutines, causing a race condition when TestImageTransformConcurrent runs with imageProcWorkers > 1. This was exposed by commit e569dd59a ("Misc webp performance work") which increased imageProcWorkers from 1 to 2. Fix by creating a new reader on each call to the open function. Fixes race condition causing segfault on Apple Silicon. Co-authored-by: Bjørn Erik Pedersen --- diff --git a/resources/testhelpers_test.go b/resources/testhelpers_test.go index 60cfae0c5..7ba71f21d 100644 --- a/resources/testhelpers_test.go +++ b/resources/testhelpers_test.go @@ -113,7 +113,11 @@ func fetchImageForSpec(spec *resources.Spec, c *qt.C, name string) images.ImageR func fetchResourceForSpec(spec *resources.Spec, c *qt.C, name string, targetPathAddends ...string) resource.ContentResource { b, err := os.ReadFile(filepath.FromSlash("testdata/" + name)) c.Assert(err, qt.IsNil) - open := hugio.NewOpenReadSeekCloser(hugio.NewReadSeekerNoOpCloserFromBytes(b)) + // Create a new reader each time to avoid race conditions when multiple + // goroutines access the same resource concurrently. + open := func() (hugio.ReadSeekCloser, error) { + return hugio.NewReadSeekerNoOpCloserFromBytes(b), nil + } targetPath := name base := "/a/" r, err := spec.NewResource(resources.ResourceSourceDescriptor{