-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fs: fix race condition on global map #1565
Merged
erikdubbelboer
merged 2 commits into
valyala:master
from
leonklingele:fix-data-race-global-map
May 24, 2023
Merged
fs: fix race condition on global map #1565
erikdubbelboer
merged 2 commits into
valyala:master
from
leonklingele:fix-data-race-global-map
May 24, 2023
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Previously, when creating multiple FS instances with a non-empty "CompressedFileSuffix" field concurrently, a data race on the global "FSCompressedFileSuffixes" might occur. This was found in fiber, probably the largest web framework based on fasthttp: git clone https://github.com/gofiber/fiber.git && cd fiber git checkout 182f9f09705eab40c61a618835d46faee79c1e49 go test -v -race -run Test_App_Static_Prefix_* === RUN Test_App_Static_Prefix_Wildcard === PAUSE Test_App_Static_Prefix_Wildcard === RUN Test_App_Static_Prefix === PAUSE Test_App_Static_Prefix === CONT Test_App_Static_Prefix === CONT Test_App_Static_Prefix_Wildcard ================== WARNING: DATA RACE Write at 0x00c0001b1c50 by goroutine 7: runtime.mapassign_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:203 +0x0 github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2c4 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x84 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1017 +0x5c testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Previous write at 0x00c0001b1c50 by goroutine 8: runtime.mapassign_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:203 +0x0 github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2c4 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x84 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1042 +0x59 testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 7 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 Goroutine 8 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 ================== ================== WARNING: DATA RACE Write at 0x00c0001f43e8 by goroutine 7: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2d3 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x84 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1017 +0x5c testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Previous write at 0x00c0001f43e8 by goroutine 8: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2d3 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x84 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1042 +0x59 testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 7 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 Goroutine 8 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 ================== ================== WARNING: DATA RACE Read at 0x00c0001f43f8 by goroutine 7: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:435 +0x344 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x84 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1017 +0x5c testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Previous write at 0x00c0001f43f8 by goroutine 8: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:435 +0x38c github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x84 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1042 +0x59 testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 7 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 Goroutine 8 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 ================== ================== WARNING: DATA RACE Read at 0x00c0001b1c50 by goroutine 11: runtime.mapaccess1_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:13 +0x0 github.com/valyala/fasthttp.(*fsHandler).newFSFile() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:1329 +0xec github.com/valyala/fasthttp.(*fsHandler).openFSFile() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:1317 +0x7c9 github.com/valyala/fasthttp.(*fsHandler).handleRequest() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:865 +0x846 github.com/valyala/fasthttp.(*fsHandler).handleRequest-fm() <autogenerated>:1 +0x44 github.com/gofiber/fiber/v2.(*App).registerStatic.func3() /home/leon/code/fiber/router.go:403 +0x15e github.com/gofiber/fiber/v2.(*App).next() /home/leon/code/fiber/router.go:144 +0x50b github.com/gofiber/fiber/v2.(*App).handler() /home/leon/code/fiber/router.go:171 +0xf2 github.com/gofiber/fiber/v2.(*App).handler-fm() <autogenerated>:1 +0x44 github.com/valyala/fasthttp.(*Server).serveConn() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/server.go:2365 +0x1b4a github.com/valyala/fasthttp.(*Server).ServeConn() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/server.go:2035 +0x10f github.com/gofiber/fiber/v2.(*App).Test.func1() /home/leon/code/fiber/app.go:934 +0xd8 Previous write at 0x00c0001b1c50 by goroutine 7: runtime.mapassign_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:203 +0x0 github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:435 +0x37d github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x84 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1017 +0x5c testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 11 (running) created at: github.com/gofiber/fiber/v2.(*App).Test() /home/leon/code/fiber/app.go:926 +0x645 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1045 +0xba testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 7 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 ================== ================== WARNING: DATA RACE Write at 0x00c0001b1c50 by goroutine 8: runtime.mapassign_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:203 +0x0 github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2c4 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x2c6 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1051 +0x29b testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Previous write at 0x00c0001b1c50 by goroutine 7: runtime.mapassign_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:203 +0x0 github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2c4 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x2c9 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1026 +0x29b testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 8 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 Goroutine 7 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 ================== ================== WARNING: DATA RACE Write at 0x00c0001f43e8 by goroutine 8: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2d3 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x2c6 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1051 +0x29b testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Previous write at 0x00c0001f43e8 by goroutine 7: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2d3 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x2c9 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1026 +0x29b testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 8 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 Goroutine 7 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 ================== ================== WARNING: DATA RACE Read at 0x00c0001f43f8 by goroutine 8: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:435 +0x344 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x2c6 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1051 +0x29b testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Previous write at 0x00c0001f43f8 by goroutine 7: github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:435 +0x38c github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x2c9 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1026 +0x29b testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Goroutine 8 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 Goroutine 7 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 ================== ================== WARNING: DATA RACE Write at 0x00c0001b1c50 by goroutine 8: runtime.mapassign_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:203 +0x0 github.com/valyala/fasthttp.(*FS).initRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:434 +0x2c4 github.com/valyala/fasthttp.(*FS).initRequestHandler-fm() <autogenerated>:1 +0x39 sync.(*Once).doSlow() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:74 +0x101 sync.(*Once).Do() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/sync/once.go:65 +0x46 github.com/valyala/fasthttp.(*FS).NewRequestHandler() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:389 +0x9bb github.com/gofiber/fiber/v2.(*App).registerStatic() /home/leon/code/fiber/router.go:396 +0x984 github.com/gofiber/fiber/v2.(*App).Static() /home/leon/code/fiber/app.go:762 +0x4f0 github.com/gofiber/fiber/v2.Test_App_Static_Prefix() /home/leon/code/fiber/app_test.go:1060 +0x4c5 testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 Previous read at 0x00c0001b1c50 by goroutine 20: runtime.mapaccess1_faststr() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/runtime/map_faststr.go:13 +0x0 github.com/valyala/fasthttp.(*fsHandler).newFSFile() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:1329 +0xec github.com/valyala/fasthttp.(*fsHandler).openFSFile() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:1317 +0x7c9 github.com/valyala/fasthttp.(*fsHandler).handleRequest() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/fs.go:865 +0x846 github.com/valyala/fasthttp.(*fsHandler).handleRequest-fm() <autogenerated>:1 +0x44 github.com/gofiber/fiber/v2.(*App).registerStatic.func3() /home/leon/code/fiber/router.go:403 +0x15e github.com/gofiber/fiber/v2.(*App).next() /home/leon/code/fiber/router.go:144 +0x50b github.com/gofiber/fiber/v2.(*App).handler() /home/leon/code/fiber/router.go:171 +0xf2 github.com/gofiber/fiber/v2.(*App).handler-fm() <autogenerated>:1 +0x44 github.com/valyala/fasthttp.(*Server).serveConn() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/server.go:2365 +0x1b4a github.com/valyala/fasthttp.(*Server).ServeConn() /home/leon/go/pkg/mod/github.com/valyala/fasthttp@v1.47.0/server.go:2035 +0x10f github.com/gofiber/fiber/v2.(*App).Test.func1() /home/leon/code/fiber/app.go:934 +0xd8 Goroutine 8 (running) created at: testing.(*T).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x805 testing.runTests.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2036 +0x8d testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.runTests() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:2034 +0x87c testing.(*M).Run() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1906 +0xb44 main.main() _testmain.go:871 +0x2e9 Goroutine 20 (finished) created at: github.com/gofiber/fiber/v2.(*App).Test() /home/leon/code/fiber/app.go:926 +0x645 github.com/gofiber/fiber/v2.Test_App_Static_Prefix_Wildcard() /home/leon/code/fiber/app_test.go:1028 +0x304 testing.tRunner() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1576 +0x216 testing.(*T).Run.func1() /nix/store/8v5zwymidmry0wd3lhj6zggskzsvqrfk-go-1.20.4/share/go/src/testing/testing.go:1629 +0x47 ================== testing.go:1446: race detected during execution of test --- FAIL: Test_App_Static_Prefix_Wildcard (0.03s) === NAME Test_App_Static_Prefix testing.go:1446: race detected during execution of test --- FAIL: Test_App_Static_Prefix (0.03s) FAIL exit status 1 FAIL github.com/gofiber/fiber/v2 0.050s
erikdubbelboer
requested changes
May 19, 2023
Co-authored-by: Erik Dubbelboer <erik@dubbelboer.com>
Updated, ptal :) |
Thanks! |
@erikdubbelboer Any plans to do a new release with this fix? Thanks |
I'll do a release tomorrow. |
Thanks! 🙌 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, when creating multiple FS instances with a non-empty "CompressedFileSuffix" field concurrently, a data race on the global "FSCompressedFileSuffixes" might occur.
This was found in fiber, probably the largest web framework based on fasthttp: