Race in ./lib.unixTempFileDir
Running go test -race ./...
on https://github.com/anacrolix/torrent/commit/3ab251fcf547c7682a76b511847525f3c84090aa. This seems to occur regardless of what version of modernc.org/sqlite I use. It looks like a race in the original C implementation?
==================
WARNING: DATA RACE
Read at 0x00000647ba48 by goroutine 351:
modernc.org/sqlite/lib.unixTempFileDir()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:39978 +0x14e
modernc.org/sqlite/lib.unixGetTempname()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:40020 +0x11d
modernc.org/sqlite/lib.unixOpen()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:40328 +0x23a
modernc.org/sqlite/lib.Xsqlite3OsOpen()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:19946 +0x1a2
modernc.org/sqlite/lib.memjrnlCreateFile()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:93551 +0xd8
modernc.org/sqlite/lib.memjrnlWrite()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:93591 +0x13d
modernc.org/sqlite/lib.Xsqlite3OsWrite()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:19811 +0x4a2
modernc.org/sqlite/lib.subjournalPage()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:50374 +0x2ed
modernc.org/sqlite/lib.subjournalPageIfRequired()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:50388 +0x49
modernc.org/sqlite/lib.Xsqlite3PagerWrite()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:52090 +0x1ca
modernc.org/sqlite/lib.Xsqlite3BtreeUpdateMeta()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:68628 +0x2dd
modernc.org/sqlite/lib.Xsqlite3VdbeExec()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:85256 +0x1a644
modernc.org/sqlite/lib.sqlite3Step()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:77016 +0x80b
modernc.org/sqlite/lib.Xsqlite3_step()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:77094 +0x22d
zombiezen.com/go/sqlite.(*Stmt).step()
/Users/anacrolix/go/pkg/mod/zombiezen.com/go/sqlite@v0.8.0/sqlite.go:637 +0x145
zombiezen.com/go/sqlite.(*Stmt).Step()
/Users/anacrolix/go/pkg/mod/zombiezen.com/go/sqlite@v0.8.0/sqlite.go:623 +0x14e
zombiezen.com/go/sqlite/sqlitex.ExecScript()
/Users/anacrolix/go/pkg/mod/zombiezen.com/go/sqlite@v0.8.0/sqlitex/exec.go:302 +0x210
github.com/anacrolix/squirrel.InitSchema()
/Users/anacrolix/go/src/github.com/anacrolix/squirrel/conn.go:128 +0xfd
github.com/anacrolix/squirrel.initDatabase()
/Users/anacrolix/go/src/github.com/anacrolix/squirrel/conn.go:165 +0x64
github.com/anacrolix/squirrel.NewCache()
/Users/anacrolix/go/src/github.com/anacrolix/squirrel/cache.go:33 +0xcc
github.com/anacrolix/torrent/storage/sqlite.NewDirectStorage()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/storage/sqlite/direct.go:19 +0x57
github.com/anacrolix/torrent/test.TestClientTransferVarious.func1()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:333 +0xcc
github.com/anacrolix/torrent/test.testClientTransfer()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:111 +0x5dd
github.com/anacrolix/torrent/test.TestClientTransferVarious.func2.1.1.2()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:362 +0x164
testing.tRunner()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1259 +0x22f
testing.(*T).Run·dwrap·21()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1306 +0x47
Previous write at 0x00000647ba48 by goroutine 293:
modernc.org/sqlite/lib.unixTempFileDir()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:39979 +0x195
modernc.org/sqlite/lib.unixGetTempname()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:40020 +0x11d
modernc.org/sqlite/lib.unixOpen()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:40328 +0x23a
modernc.org/sqlite/lib.Xsqlite3OsOpen()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:19946 +0x1a2
modernc.org/sqlite/lib.memjrnlCreateFile()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:93551 +0xd8
modernc.org/sqlite/lib.memjrnlWrite()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:93591 +0x13d
modernc.org/sqlite/lib.Xsqlite3OsWrite()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:19811 +0x4a2
modernc.org/sqlite/lib.subjournalPage()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:50374 +0x2ed
modernc.org/sqlite/lib.subjournalPageIfRequired()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:50388 +0x49
modernc.org/sqlite/lib.Xsqlite3PagerWrite()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:52090 +0x1ca
modernc.org/sqlite/lib.Xsqlite3BtreeUpdateMeta()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:68628 +0x2dd
modernc.org/sqlite/lib.Xsqlite3VdbeExec()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:85256 +0x1a644
modernc.org/sqlite/lib.sqlite3Step()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:77016 +0x80b
modernc.org/sqlite/lib.Xsqlite3_step()
/Users/anacrolix/go/pkg/mod/modernc.org/sqlite@v1.14.1/lib/sqlite_darwin_amd64.go:77094 +0x22d
zombiezen.com/go/sqlite.(*Stmt).step()
/Users/anacrolix/go/pkg/mod/zombiezen.com/go/sqlite@v0.8.0/sqlite.go:637 +0x145
zombiezen.com/go/sqlite.(*Stmt).Step()
/Users/anacrolix/go/pkg/mod/zombiezen.com/go/sqlite@v0.8.0/sqlite.go:623 +0x14e
zombiezen.com/go/sqlite/sqlitex.ExecScript()
/Users/anacrolix/go/pkg/mod/zombiezen.com/go/sqlite@v0.8.0/sqlitex/exec.go:302 +0x210
github.com/anacrolix/squirrel.InitSchema()
/Users/anacrolix/go/src/github.com/anacrolix/squirrel/conn.go:128 +0xfd
github.com/anacrolix/squirrel.initDatabase()
/Users/anacrolix/go/src/github.com/anacrolix/squirrel/conn.go:165 +0x64
github.com/anacrolix/squirrel.NewCache()
/Users/anacrolix/go/src/github.com/anacrolix/squirrel/cache.go:33 +0xcc
github.com/anacrolix/torrent/storage/sqlite.NewDirectStorage()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/storage/sqlite/direct.go:19 +0x57
github.com/anacrolix/torrent/test.TestClientTransferVarious.func1()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:333 +0xcc
github.com/anacrolix/torrent/test.testClientTransfer()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:111 +0x5dd
github.com/anacrolix/torrent/test.TestClientTransferVarious.func2.1.1.2()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:362 +0x164
testing.tRunner()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1259 +0x22f
testing.(*T).Run·dwrap·21()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1306 +0x47
Goroutine 351 (running) created at:
testing.(*T).Run()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1306 +0x726
github.com/anacrolix/torrent/test.TestClientTransferVarious.func2.1.1()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:361 +0x204
testing.tRunner()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1259 +0x22f
testing.(*T).Run·dwrap·21()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1306 +0x47
Goroutine 293 (running) created at:
testing.(*T).Run()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1306 +0x726
github.com/anacrolix/torrent/test.TestClientTransferVarious.func2.1.1()
/Users/anacrolix/go/src/github.com/anacrolix/torrent/test/transfer_test.go:361 +0x204
testing.tRunner()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1259 +0x22f
testing.(*T).Run·dwrap·21()
/Users/anacrolix/src/go1.17/src/testing/testing.go:1306 +0x47
==================