Closed MaartenStaa closed 3 years ago
PHP Version: 7.4
OS: macOS
Run command:
./vendor/bin/noverify check app
The minimal code in which the bug appears:
I don't think it's related to the actual code, but is a race condition. On a second run there was no crash.
Actual Behavior:
fatal error: concurrent map writes followed by a panic
fatal error: concurrent map writes
Expected Behavior:
To run without an internal error, and produce a list of findings.
[Optional] Details:
Output:
17:22:39 Started 17:22:39 Indexing [app] fatal error: concurrent map writes fatal error: concurrent map writes goroutine 24 [running]: runtime.throw(0x17a4c46, 0x15) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/panic.go:1117 +0x72 fp=0xc004b72008 sp=0xc004b71fd8 pc=0x10375f2 runtime.mapdelete_faststr(0x169f600, 0xc00001ebd0, 0xc0071b9c10, 0x10) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/map_faststr.go:382 +0x3a8 fp=0xc004b72070 sp=0xc004b72008 pc=0x1014848 github.com/VKCOM/noverify/src/types.Map.Erase(...) /Users/petrmakhnev/noverify/src/types/map.go:351 github.com/VKCOM/noverify/src/linter.(*andWalker).EnterNode(0xc009224600, 0x18570b8, 0xc0041c6de0, 0xc0112f05b0) /Users/petrmakhnev/noverify/src/linter/and_walker.go:136 +0xaae fp=0xc004b721c8 sp=0xc004b72070 pc=0x151560e github.com/VKCOM/noverify/src/ir.(*InstanceOfExpr).Walk(0xc0041c6de0, 0x1857ce8, 0xc009224600) /Users/petrmakhnev/noverify/src/ir/walk.go:1045 +0x4b fp=0xc004b721f8 sp=0xc004b721c8 pc=0x114588b github.com/VKCOM/noverify/src/ir.(*BooleanNotExpr).Walk(0xc0080c55e0, 0x1857ce8, 0xc009224600) /Users/petrmakhnev/noverify/src/ir/walk.go:383 +0xb2 fp=0xc004b72228 sp=0xc004b721f8 pc=0x1141952 github.com/VKCOM/noverify/src/linter.(*andWalker).EnterNode(0xc009224600, 0x1856820, 0xc0041c6d80, 0xc009224600) /Users/petrmakhnev/noverify/src/linter/and_walker.go:77 +0x17c4 fp=0xc004b72380 sp=0xc004b72228 pc=0x1516324 github.com/VKCOM/noverify/src/ir.(*BooleanAndExpr).Walk(0xc0041c6d80, 0x1857ce8, 0xc009224600) /Users/petrmakhnev/noverify/src/ir/walk.go:366 +0x4b fp=0xc004b723b0 sp=0xc004b72380 pc=0x11417cb github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf.func3() /Users/petrmakhnev/noverify/src/linter/block.go:1564 +0xf0 fp=0xc004b72460 sp=0xc004b723b0 pc=0x1565a30 github.com/VKCOM/noverify/src/linter.(*blockWalker).withSpecificContext(...) /Users/petrmakhnev/noverify/src/linter/block.go:668 github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf(0xc007e69ce0, 0xc00f485b90, 0xc00f485b00) /Users/petrmakhnev/noverify/src/linter/block.go:1556 +0x231 fp=0xc004b72680 sp=0xc004b72460 pc=0x1520831 github.com/VKCOM/noverify/src/linter.(*blockWalker).EnterNode(0xc007e69ce0, 0x1857040, 0xc00f485b90, 0xc00eddc900) /Users/petrmakhnev/noverify/src/linter/block.go:362 +0x1227 fp=0xc004b72770 sp=0xc004b72680 pc=0x1518a07 github.com/VKCOM/noverify/src/ir.(*IfStmt).Walk(0xc00f485b90, 0x1857d10, 0xc007e69ce0) /Users/petrmakhnev/noverify/src/ir/walk.go:1009 +0x4b fp=0xc004b727b8 sp=0xc004b72770 pc=0x114554b github.com/VKCOM/noverify/src/linter.(*rootWalker).handleFuncStmts(0xc0106d5980, 0xc0041c76e0, 0x1, 0x1, 0x0, 0x0, 0x0, 0xc0041c6d50, 0x3, 0x3, ...) /Users/petrmakhnev/noverify/src/linter/root.go:444 +0x498 fp=0xc004b728f8 sp=0xc004b727b8 pc=0x154bcb8 github.com/VKCOM/noverify/src/linter.(*rootWalker).enterClassMethod(0xc0106d5980, 0xc010afc690, 0xc010afc690) /Users/petrmakhnev/noverify/src/linter/root.go:1050 +0x85e fp=0xc004b72e98 sp=0xc004b728f8 pc=0x1550a3e github.com/VKCOM/noverify/src/linter.(*rootWalker).EnterNode(0xc0106d5980, 0x18569b0, 0xc010afc690, 0xc004b73501) /Users/petrmakhnev/noverify/src/linter/root.go:236 +0x180d fp=0xc004b735b0 sp=0xc004b72e98 pc=0x154982d github.com/VKCOM/noverify/src/ir.(*ClassMethodStmt).Walk(0xc010afc690, 0x1857d38, 0xc0106d5980) /Users/petrmakhnev/noverify/src/ir/walk.go:490 +0x4b fp=0xc004b73608 sp=0xc004b735b0 pc=0x11423cb github.com/VKCOM/noverify/src/ir.(*ClassStmt).Walk(0xc007e69c30, 0x1857d38, 0xc0106d5980) /Users/petrmakhnev/noverify/src/ir/walk.go:534 +0x189 fp=0xc004b73660 sp=0xc004b73608 pc=0x1142789 github.com/VKCOM/noverify/src/ir.(*Root).Walk(0xc0041c6ba0, 0x1857d38, 0xc0106d5980) /Users/petrmakhnev/noverify/src/ir/walk.go:1533 +0xac fp=0xc004b736a8 sp=0xc004b73660 pc=0x114856c github.com/VKCOM/noverify/src/linter.(*Worker).analyzeFile(0xc007a7c500, 0xc0092244e0, 0xc0041c6ba0, 0x3d3, 0x3d3, 0xc0092244e0) /Users/petrmakhnev/noverify/src/linter/worker.go:302 +0x4e5 fp=0xc004b73828 sp=0xc004b736a8 pc=0x1563665 github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc007a7c500, 0xc005f7d5c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:143 +0x5ce fp=0xc004b739d0 sp=0xc004b73828 pc=0x1561a6e github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc007a7c500, 0xc00288eb00, 0xa3, 0xc005f7d5c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 fp=0xc004b73ab0 sp=0xc004b739d0 pc=0x15621b3 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc007a7c500, 0xc005f7d5c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c fp=0xc004b73cc0 sp=0xc004b73ab0 pc=0x156292c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc007a7c500, 0xc005f7d5c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 fp=0xc004b73e70 sp=0xc004b73cc0 pc=0x15630a5 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x4) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e fp=0xc004b73fa8 sp=0xc004b73e70 pc=0x156791e runtime.goexit() /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc004b73fb0 sp=0xc004b73fa8 pc=0x1070921 created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 1 [semacquire]: sync.runtime_Semacquire(0xc003fc3728) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/sema.go:56 +0x45 sync.(*WaitGroup).Wait(0xc003fc3720) /opt/homebrew/Cellar/go/1.16.6/libexec/src/sync/waitgroup.go:130 +0x65 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles(0xc00000c6a8, 0xc002ee91c0, 0x0, 0x0, 0x0, 0x0) /Users/petrmakhnev/noverify/src/linter/linter.go:110 +0x289 github.com/VKCOM/noverify/src/linter.(*Linter).AnalyzeFiles(...) /Users/petrmakhnev/noverify/src/linter/linter.go:62 github.com/VKCOM/noverify/src/cmd.parseIndexOnlyFiles(0xc002867c98) /Users/petrmakhnev/noverify/src/cmd/git_main.go:32 +0xfa github.com/VKCOM/noverify/src/cmd.mainNoExit(0xc00060f200, 0x0, 0x0, 0x0) /Users/petrmakhnev/noverify/src/cmd/main.go:214 +0x548 github.com/VKCOM/noverify/src/cmd.Check(0xc00060f200, 0xc00001e1d0, 0x1, 0x1) /Users/petrmakhnev/noverify/src/cmd/check.go:43 +0x26f github.com/VKCOM/noverify/src/cmd.(*App).Run(0xc000257f80, 0xc000030de0, 0x1, 0xc00000ebd0, 0x1) /Users/petrmakhnev/noverify/src/cmd/cli.go:354 +0x57f github.com/VKCOM/noverify/src/cmd.Run(0xc000030de0, 0xc000165f58, 0x10f6a12, 0xc000078050) /Users/petrmakhnev/noverify/src/cmd/main.go:128 +0x2bb github.com/VKCOM/noverify/src/cmd.Main(0x0) /Users/petrmakhnev/noverify/src/cmd/main.go:133 +0x2f main.main() /Users/petrmakhnev/noverify/main.go:14 +0x45 goroutine 16 [select]: github.com/VKCOM/noverify/src/linter.MemoryLimiterThread(0x1400000) /Users/petrmakhnev/noverify/src/linter/limits.go:33 +0xf3 created by github.com/VKCOM/noverify/src/cmd.mainNoExit /Users/petrmakhnev/noverify/src/cmd/main.go:198 +0x313 goroutine 20 [runnable]: syscall.syscall(0x10b97a0, 0x17, 0xc002c177d8, 0x0, 0x0, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/sys_darwin.go:19 +0x2e syscall.Fstat(0x17, 0xc002c177d8, 0x106ba88, 0xc0001a3200) /opt/homebrew/Cellar/go/1.16.6/libexec/src/syscall/zsyscall_darwin_amd64.go:1969 +0x5c os.newFile.func1(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_unix.go:147 os.ignoringEINTR(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_posix.go:245 os.newFile(0x17, 0xc008fda000, 0xa4, 0x1, 0x17) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_unix.go:146 +0x152 os.openFileNolog(0xc008fda000, 0xa4, 0x601, 0x1b6, 0x0, 0xc008fda000, 0x6e) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_unix.go:240 +0x1d7 os.OpenFile(0xc008fda000, 0xa4, 0x601, 0x1b6, 0x0, 0xc008fda000, 0xa4) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file.go:331 +0x65 github.com/VKCOM/noverify/src/linter.createMetaCacheFile(0xc013549e60, 0x53, 0xc0197d43c0, 0xa0, 0xc000602600, 0x0, 0x0) /Users/petrmakhnev/noverify/src/linter/cache.go:90 +0x111 github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00832c0a0, 0xc0197d43c0, 0xa0, 0xc013549e60, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:165 +0x165 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00832c0a0, 0xc013549e60, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00832c0a0, 0xc013549e60, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x0) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 19 [chan send]: github.com/VKCOM/noverify/src/workspace.readFilenames.func1(0xc00c3ee360, 0x5e, 0x185e2b0, 0xc007b87540, 0x0, 0x0, 0xc002861668, 0x10d11f4) /Users/petrmakhnev/noverify/src/workspace/files.go:108 +0x7df io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc00c3ee360, 0x5e, 0x185e2b0, 0xc007b87540, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:66 +0x77 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc0133a9a80, 0x3d, 0x185e2b0, 0xc007b86c40, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc0133a9940, 0x35, 0x185e2b0, 0xc003ac9800, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc0160da780, 0x2f, 0x185e2b0, 0xc003ac9700, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc0160da720, 0x27, 0x185e2b0, 0xc0022b6ec0, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc0113f12a0, 0x1d, 0x185e2b0, 0xc0022b69c0, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc0113f1220, 0x19, 0x185e2b0, 0xc0022b6700, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0xc00c15dbf0, 0x9, 0x185e2b0, 0xc002c51d80, 0xc002861ee8, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.walkDir(0x1852ca0, 0xc002b943a0, 0x173db6e, 0x1, 0x185e1d0, 0xc002b943b0, 0xc002861ee8, 0x0, 0x100b27b) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:85 +0x2a5 io/fs.WalkDir(0x1852ca0, 0xc002b943a0, 0x173db6e, 0x1, 0xc00066eee8, 0x0, 0x16cab20) /opt/homebrew/Cellar/go/1.16.6/libexec/src/io/fs/walk.go:112 +0x1b9 github.com/VKCOM/noverify/src/workspace.readFilenames(0xc0066c7380, 0xc003f9ec60, 0x27, 0x0, 0xc00009d200, 0x4, 0x4) /Users/petrmakhnev/noverify/src/workspace/files.go:72 +0x265 github.com/VKCOM/noverify/src/workspace.ReadFilenames.func1(0xc0066c7380) /Users/petrmakhnev/noverify/src/workspace/files.go:17 +0xa8 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func2(0xc002ee91c0, 0xc0066c7380) /Users/petrmakhnev/noverify/src/linter/linter.go:85 +0x30 created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:84 +0x17f goroutine 21 [runnable]: github.com/VKCOM/noverify/src/phpdoctypes.(*TypeConverter).mapType(0xc0079b6af0, 0x600000002, 0xc0093d20e1, 0x6, 0x1e26578, 0x0, 0x0, 0xc0093d3221, 0x6, 0x100000001e26578) /Users/petrmakhnev/noverify/src/phpdoctypes/converter.go:65 +0x1545 github.com/VKCOM/noverify/src/phpdoctypes.(*TypeConverter).mapType(0xc0079b6af0, 0xb0000000c, 0xc0093d20e1, 0xb, 0xc009351560, 0x2, 0x2, 0x55, 0x32d0000002f, 0x6f7c00000000) /Users/petrmakhnev/noverify/src/phpdoctypes/converter.go:132 +0xde9 github.com/VKCOM/noverify/src/phpdoctypes.ToRealType(0xc0098853e0, 0xc0093d20e1, 0xb, 0xb0000000c, 0xc0093d20e1, 0xb, 0xc009351560, 0x2, 0x2, 0x0) /Users/petrmakhnev/noverify/src/phpdoctypes/converter.go:31 +0xd3 github.com/VKCOM/noverify/src/linter.(*rootWalker).parsePHPDocVar(0xc00728e600, 0xc0093d20d8, 0x17, 0xc009884410, 0x1, 0x1, 0x0, 0x17ccf88, 0x0) /Users/petrmakhnev/noverify/src/linter/root.go:830 +0x12e github.com/VKCOM/noverify/src/linter.(*rootWalker).enterPropertyList(0xc00728e600, 0xc0098a4bb0, 0xc0098a4bb0) /Users/petrmakhnev/noverify/src/linter/root.go:874 +0x3dc github.com/VKCOM/noverify/src/linter.(*rootWalker).EnterNode(0xc00728e600, 0x1857658, 0xc0098a4bb0, 0xc0079b7501) /Users/petrmakhnev/noverify/src/linter/root.go:232 +0x10ca github.com/VKCOM/noverify/src/ir.(*PropertyListStmt).Walk(0xc0098a4bb0, 0x1857d38, 0xc00728e600) /Users/petrmakhnev/noverify/src/ir/walk.go:1477 +0x4b github.com/VKCOM/noverify/src/ir.(*ClassStmt).Walk(0xc0098a51e0, 0x1857d38, 0xc00728e600) /Users/petrmakhnev/noverify/src/ir/walk.go:534 +0x189 github.com/VKCOM/noverify/src/ir.(*Root).Walk(0xc00fffc780, 0x1857d38, 0xc00728e600) /Users/petrmakhnev/noverify/src/ir/walk.go:1533 +0xac github.com/VKCOM/noverify/src/linter.(*Worker).analyzeFile(0xc0067beeb0, 0xc009ed08a0, 0xc00fffc780, 0x770a, 0x770a, 0xc009ed08a0) /Users/petrmakhnev/noverify/src/linter/worker.go:302 +0x4e5 github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc0067beeb0, 0xc012622420, 0x55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:143 +0x5ce github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc0067beeb0, 0xc003b0cb00, 0xa2, 0xc012622420, 0x55, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc0067beeb0, 0xc012622420, 0x55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc0067beeb0, 0xc012622420, 0x55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x1) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 22 [runnable]: github.com/VKCOM/php-parser/internal/php8.(*Lexer).setTokenPosition(0xc00b661ec0, 0xc00c12c6c0) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/internal/php8/lexer.go:49 +0x185 github.com/VKCOM/php-parser/internal/php8.(*Lexer).Lex(0xc00b661ec0, 0xc00c12c680) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/internal/php8/scanner.go:21714 +0x202d0 github.com/VKCOM/php-parser/internal/php8.(*Parser).Lex(0xc013e3efc0, 0xc007cfe000, 0xe038) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/internal/php8/parser.go:31 +0x2e github.com/VKCOM/php-parser/internal/php8.yylex1(0x18580d0, 0xc013e3efc0, 0xc007cfe000, 0xe038, 0x3a) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/internal/php8/php8.go:2360 +0x56 github.com/VKCOM/php-parser/internal/php8.(*yyParserImpl).Parse(0xc007cfe000, 0x18580d0, 0xc013e3efc0, 0x0) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/internal/php8/php8.go:2445 +0x2d0b5 github.com/VKCOM/php-parser/internal/php8.yyParse(...) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/internal/php8/php8.go:2394 github.com/VKCOM/php-parser/internal/php8.(*Parser).Parse(0xc013e3efc0, 0xc002c206e0) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/internal/php8/parser.go:51 +0x73 github.com/VKCOM/php-parser/pkg/parser.Parse(0xc00b350000, 0xa2f7, 0xa2f7, 0xc000026d70, 0xc002c206d0, 0x0, 0x0, 0x1041bfc, 0xc009b82c00) /Users/petrmakhnev/go/pkg/mod/github.com/!v!k!c!o!m/php-parser@v0.8.0-rc.2.0.20210802093708-d85f5a481602/pkg/parser/parser.go:59 +0xd8e github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc00458d2c0, 0xc0126223c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:126 +0x4b5 github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00458d2c0, 0xc0029cb550, 0xa3, 0xc0126223c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00458d2c0, 0xc0126223c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00458d2c0, 0xc0126223c0, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x2) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 23 [runnable]: syscall.syscall(0x10b9540, 0xc008f8a420, 0xc0197a06e0, 0x0, 0x0, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/sys_darwin.go:19 +0x2e syscall.Rename(0xc0197a0500, 0xa0, 0xc01926af00, 0x9c, 0x1851dc0, 0xc003de18f0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/syscall/zsyscall_darwin_amd64.go:1308 +0x119 os.rename.func1(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_unix.go:42 os.ignoringEINTR(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_posix.go:245 os.rename(0xc0197a0500, 0xa0, 0xc01926af00, 0x9c, 0xc0158270e0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_unix.go:41 +0xa7 os.Rename(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file.go:348 github.com/VKCOM/noverify/src/linter.createMetaCacheFile(0xc009da3f40, 0x4f, 0xc01926af00, 0x9c, 0xc0088a0480, 0x0, 0x0) /Users/petrmakhnev/noverify/src/linter/cache.go:111 +0x27e github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc005bb3860, 0xc01926af00, 0x9c, 0xc009da3f40, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:165 +0x165 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc005bb3860, 0xc009da3f40, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc005bb3860, 0xc009da3f40, 0x4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x3) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 25 [runnable]: github.com/VKCOM/noverify/src/types.Map.Clone(0xc00ed47f00, 0xc00ba73a70, 0xc006de5660, 0xc) /Users/petrmakhnev/noverify/src/types/map.go:245 +0x127 github.com/VKCOM/noverify/src/meta.(*Scope).Clone(0xc0158284d0, 0xc00bede700) /Users/petrmakhnev/noverify/src/meta/scope.go:356 +0x148 github.com/VKCOM/noverify/src/linter.copyBlockContext(0xc015165480, 0xc00bede700) /Users/petrmakhnev/noverify/src/linter/block_context.go:76 +0x45 github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf(0xc00d28fce0, 0xc00d987290, 0xc00d987200) /Users/petrmakhnev/noverify/src/linter/block.go:1555 +0x169 github.com/VKCOM/noverify/src/linter.(*blockWalker).EnterNode(0xc00d28fce0, 0x1857040, 0xc00d987290, 0xc00d28fce0) /Users/petrmakhnev/noverify/src/linter/block.go:362 +0x1227 github.com/VKCOM/noverify/src/ir.(*IfStmt).Walk(0xc00d987290, 0x1857d10, 0xc00d28fce0) /Users/petrmakhnev/noverify/src/ir/walk.go:1009 +0x4b github.com/VKCOM/noverify/src/ir.(*StmtList).Walk(0xc011a41e90, 0x1857d10, 0xc00d28fce0) /Users/petrmakhnev/noverify/src/ir/walk.go:1677 +0xac github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf.func4(...) /Users/petrmakhnev/noverify/src/linter/block.go:1576 github.com/VKCOM/noverify/src/linter.(*blockWalker).withSpecificContext(...) /Users/petrmakhnev/noverify/src/linter/block.go:668 github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf(0xc00d28fce0, 0xc00d986510, 0xc00d986500) /Users/petrmakhnev/noverify/src/linter/block.go:1575 +0x33f github.com/VKCOM/noverify/src/linter.(*blockWalker).EnterNode(0xc00d28fce0, 0x1857040, 0xc00d986510, 0xc015804876) /Users/petrmakhnev/noverify/src/linter/block.go:362 +0x1227 github.com/VKCOM/noverify/src/ir.(*IfStmt).Walk(0xc00d986510, 0x1857d10, 0xc00d28fce0) /Users/petrmakhnev/noverify/src/ir/walk.go:1009 +0x4b github.com/VKCOM/noverify/src/linter.(*rootWalker).handleFuncStmts(0xc00c017b00, 0xc00c45ebd0, 0x1, 0x1, 0x0, 0x0, 0x0, 0xc01593ae00, 0x38, 0x38, ...) /Users/petrmakhnev/noverify/src/linter/root.go:444 +0x498 github.com/VKCOM/noverify/src/linter.(*rootWalker).enterClassMethod(0xc00c017b00, 0xc00be673b0, 0xc00be673b0) /Users/petrmakhnev/noverify/src/linter/root.go:1050 +0x85e github.com/VKCOM/noverify/src/linter.(*rootWalker).EnterNode(0xc00c017b00, 0x18569b0, 0xc00be673b0, 0xc0079b7500) /Users/petrmakhnev/noverify/src/linter/root.go:236 +0x180d github.com/VKCOM/noverify/src/ir.(*ClassMethodStmt).Walk(0xc00be673b0, 0x1857d38, 0xc00c017b00) /Users/petrmakhnev/noverify/src/ir/walk.go:490 +0x4b github.com/VKCOM/noverify/src/ir.(*ClassStmt).Walk(0xc00b5113f0, 0x1857d38, 0xc00c017b00) /Users/petrmakhnev/noverify/src/ir/walk.go:534 +0x189 github.com/VKCOM/noverify/src/ir.(*Root).Walk(0xc012252450, 0x1857d38, 0xc00c017b00) /Users/petrmakhnev/noverify/src/ir/walk.go:1533 +0xac github.com/VKCOM/noverify/src/linter.(*Worker).analyzeFile(0xc00458dbd0, 0xc00d1d5440, 0xc012252450, 0xd38b, 0xd38b, 0xc00d1d5440) /Users/petrmakhnev/noverify/src/linter/worker.go:302 +0x4e5 github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc00458dbd0, 0xc011efd620, 0x51, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:143 +0x5ce github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00458dbd0, 0xc00bd48aa0, 0x9e, 0xc011efd620, 0x51, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00458dbd0, 0xc011efd620, 0x51, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00458dbd0, 0xc011efd620, 0x51, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x5) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 26 [runnable]: encoding/gob.encBool(0xc00242c480, 0xc0094f4800, 0x167a860, 0xc00db41e48, 0x81) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:174 +0xee encoding/gob.(*Encoder).encodeStruct(0xc00e6e1720, 0xc00e6e1758, 0xc002410660, 0x16cb200, 0xc00db41e48, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:328 +0x256 encoding/gob.encOpFor.func4(0xc00244a480, 0xc0094f47c0, 0x16cb200, 0xc00db41e48, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:581 +0xac encoding/gob.(*Encoder).encodeStruct(0xc00e6e1720, 0xc00e6e1758, 0xc002410630, 0x1718d40, 0xc00db41dd0, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:328 +0x256 encoding/gob.encOpFor.func4(0x0, 0xc0094f4780, 0x1718d40, 0xc00db41dd0, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:581 +0xac encoding/gob.encodeReflectValue(0xc0094f4780, 0x1718d40, 0xc00db41dd0, 0x99, 0xc002960760, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:363 +0xd6 encoding/gob.(*Encoder).encodeMap(0xc00e6e1720, 0xc00e6e1758, 0x169d7a0, 0xc00e6e1ab0, 0x95, 0x17cc078, 0xc002960760, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:375 +0x23b encoding/gob.encOpFor.func3(0xc002460720, 0xc0094f4740, 0x169d7a0, 0xc00e6e1ab0, 0x95) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:571 +0xaa encoding/gob.(*Encoder).encodeStruct(0xc00e6e1720, 0xc00e6e1758, 0xc002410618, 0x16ecc20, 0xc00e6e1ab0, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:328 +0x256 encoding/gob.encOpFor.func4(0xc00244a750, 0xc0094f45c0, 0x16ecc20, 0xc00e6e1ab0, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:581 +0xac encoding/gob.(*Encoder).encodeStruct(0xc00e6e1720, 0xc00e6e1758, 0xc0024105d0, 0x171f360, 0xc00e6e1a40, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:328 +0x256 encoding/gob.encOpFor.func4(0x0, 0xc0094f4580, 0x171f360, 0xc00e6e1a40, 0x99) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:581 +0xac encoding/gob.encodeReflectValue(0xc0094f4580, 0x171f360, 0xc00e6e1a40, 0x99, 0xc0029607c0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:363 +0xd6 encoding/gob.(*Encoder).encodeMap(0xc00e6e1720, 0xc00e6e1758, 0x169d740, 0xc0007026f0, 0x195, 0x17cc078, 0xc0029607c0, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:375 +0x23b encoding/gob.encOpFor.func3(0xc002460840, 0xc0094f4540, 0x169d740, 0xc0007026f0, 0x195) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:571 +0xaa encoding/gob.(*Encoder).encodeStruct(0xc00e6e1720, 0xc00e6e1758, 0xc0024105b8, 0x16ecb60, 0xc0007026f0, 0x199) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:328 +0x256 encoding/gob.encOpFor.func4(0xc000508c30, 0xc0094f4500, 0x16ecb60, 0xc0007026f0, 0x199) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:581 +0xac encoding/gob.(*Encoder).encodeStruct(0xc00e6e1720, 0xc00e6e1758, 0xc0024105a0, 0x17061e0, 0xc0007026e8, 0x199) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:328 +0x256 encoding/gob.(*Encoder).encode(0xc00e6e1720, 0xc00e6e1758, 0x166b440, 0xc0007026e8, 0x16, 0xc000190400) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encode.go:701 +0x205 encoding/gob.(*Encoder).EncodeValue(0xc00e6e1720, 0x166b440, 0xc0007026e8, 0x16, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encoder.go:251 +0x399 encoding/gob.(*Encoder).Encode(0xc00e6e1720, 0x166b440, 0xc0007026e8, 0x0, 0xc0094f4440) /opt/homebrew/Cellar/go/1.16.6/libexec/src/encoding/gob/encoder.go:176 +0xa9 github.com/VKCOM/noverify/src/linter.writeMetaCache(0xc0094f4440, 0xc000702600, 0x1000, 0xc009d1c000) /Users/petrmakhnev/noverify/src/linter/cache.go:74 +0x96 github.com/VKCOM/noverify/src/linter.createMetaCacheFile(0xc005f7d500, 0x59, 0xc003a95600, 0xa6, 0xc000702600, 0x0, 0x0) /Users/petrmakhnev/noverify/src/linter/cache.go:98 +0x212 github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00458ddb0, 0xc003a95600, 0xa6, 0xc005f7d500, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:165 +0x165 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00458ddb0, 0xc005f7d500, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00458ddb0, 0xc005f7d500, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x6) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 27 [runnable]: syscall.syscall(0x10b9540, 0xc008f74160, 0xc008f742c0, 0x0, 0x0, 0x0, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/sys_darwin.go:19 +0x2e syscall.Rename(0xc013bb1d90, 0xaa, 0xc00288e420, 0xa6, 0x1851dc0, 0xc010809200) /opt/homebrew/Cellar/go/1.16.6/libexec/src/syscall/zsyscall_darwin_amd64.go:1308 +0x119 os.rename.func1(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_unix.go:42 os.ignoringEINTR(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_posix.go:245 os.rename(0xc013bb1d90, 0xaa, 0xc00288e420, 0xa6, 0xc0145c3a58, 0x0) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file_unix.go:41 +0xa7 os.Rename(...) /opt/homebrew/Cellar/go/1.16.6/libexec/src/os/file.go:348 github.com/VKCOM/noverify/src/linter.createMetaCacheFile(0xc019a92e40, 0x59, 0xc00288e420, 0xa6, 0xc000581c80, 0x0, 0x0) /Users/petrmakhnev/noverify/src/linter/cache.go:111 +0x27e github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00458db80, 0xc00288e420, 0xa6, 0xc019a92e40, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:165 +0x165 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00458db80, 0xc019a92e40, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00458db80, 0xc019a92e40, 0x59, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x7) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 28 [runnable]: github.com/VKCOM/noverify/src/linter.(*blockWalker).addStatement(...) /Users/petrmakhnev/noverify/src/linter/block.go:148 github.com/VKCOM/noverify/src/linter.(*blockWalker).handleSwitch.func1() /Users/petrmakhnev/noverify/src/linter/block.go:1765 +0x34b github.com/VKCOM/noverify/src/linter.(*blockWalker).withNewContext(0xc008b1f8c0, 0xc01492bc98, 0xc00969e940) /Users/petrmakhnev/noverify/src/linter/block.go:657 +0x5c github.com/VKCOM/noverify/src/linter.(*blockWalker).handleSwitch(0xc008b1f8c0, 0xc00c500400, 0xc00c500400) /Users/petrmakhnev/noverify/src/linter/block.go:1761 +0x2cf github.com/VKCOM/noverify/src/linter.(*blockWalker).EnterNode(0xc008b1f8c0, 0x1857928, 0xc00c500400, 0x1e26578) /Users/petrmakhnev/noverify/src/linter/block.go:364 +0x1327 github.com/VKCOM/noverify/src/ir.(*SwitchStmt).Walk(0xc00c500400, 0x1857d10, 0xc008b1f8c0) /Users/petrmakhnev/noverify/src/ir/walk.go:1690 +0x4b github.com/VKCOM/noverify/src/ir.(*StmtList).Walk(0xc00d2f4d50, 0x1857d10, 0xc008b1f8c0) /Users/petrmakhnev/noverify/src/ir/walk.go:1677 +0xac github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf.func4(...) /Users/petrmakhnev/noverify/src/linter/block.go:1576 github.com/VKCOM/noverify/src/linter.(*blockWalker).withSpecificContext(...) /Users/petrmakhnev/noverify/src/linter/block.go:668 github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf(0xc008b1f8c0, 0xc011a27b00, 0xc011a27b00) /Users/petrmakhnev/noverify/src/linter/block.go:1575 +0x33f github.com/VKCOM/noverify/src/linter.(*blockWalker).EnterNode(0xc008b1f8c0, 0x1857040, 0xc011a27b00, 0xc008b1f8c0) /Users/petrmakhnev/noverify/src/linter/block.go:362 +0x1227 github.com/VKCOM/noverify/src/ir.(*IfStmt).Walk(0xc011a27b00, 0x1857d10, 0xc008b1f8c0) /Users/petrmakhnev/noverify/src/ir/walk.go:1009 +0x4b github.com/VKCOM/noverify/src/ir.(*StmtList).Walk(0xc00d2f4b10, 0x1857d10, 0xc008b1f8c0) /Users/petrmakhnev/noverify/src/ir/walk.go:1677 +0xac github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf.func4(...) /Users/petrmakhnev/noverify/src/linter/block.go:1576 github.com/VKCOM/noverify/src/linter.(*blockWalker).withSpecificContext(...) /Users/petrmakhnev/noverify/src/linter/block.go:668 github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf(0xc008b1f8c0, 0xc011a27a70, 0xc011a27a00) /Users/petrmakhnev/noverify/src/linter/block.go:1575 +0x33f github.com/VKCOM/noverify/src/linter.(*blockWalker).EnterNode(0xc008b1f8c0, 0x1857040, 0xc011a27a70, 0xc00f461ef4) /Users/petrmakhnev/noverify/src/linter/block.go:362 +0x1227 github.com/VKCOM/noverify/src/ir.(*IfStmt).Walk(0xc011a27a70, 0x1857d10, 0xc008b1f8c0) /Users/petrmakhnev/noverify/src/ir/walk.go:1009 +0x4b github.com/VKCOM/noverify/src/linter.(*rootWalker).handleFuncStmts(0xc002eedb00, 0xc015503860, 0x2, 0x2, 0x0, 0x0, 0x0, 0xc00d2f4930, 0x3, 0x3, ...) /Users/petrmakhnev/noverify/src/linter/root.go:444 +0x498 github.com/VKCOM/noverify/src/linter.(*rootWalker).enterClassMethod(0xc002eedb00, 0xc005f90d20, 0xc005f90d20) /Users/petrmakhnev/noverify/src/linter/root.go:1050 +0x85e github.com/VKCOM/noverify/src/linter.(*rootWalker).EnterNode(0xc002eedb00, 0x18569b0, 0xc005f90d20, 0xc01492d500) /Users/petrmakhnev/noverify/src/linter/root.go:236 +0x180d github.com/VKCOM/noverify/src/ir.(*ClassMethodStmt).Walk(0xc005f90d20, 0x1857d38, 0xc002eedb00) /Users/petrmakhnev/noverify/src/ir/walk.go:490 +0x4b github.com/VKCOM/noverify/src/ir.(*ClassStmt).Walk(0xc008b1f340, 0x1857d38, 0xc002eedb00) /Users/petrmakhnev/noverify/src/ir/walk.go:534 +0x189 github.com/VKCOM/noverify/src/ir.(*Root).Walk(0xc011f18660, 0x1857d38, 0xc002eedb00) /Users/petrmakhnev/noverify/src/ir/walk.go:1533 +0xac github.com/VKCOM/noverify/src/linter.(*Worker).analyzeFile(0xc00832c140, 0xc0096a4de0, 0xc011f18660, 0x4d80, 0x4d80, 0xc0096a4de0) /Users/petrmakhnev/noverify/src/linter/worker.go:302 +0x4e5 github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc00832c140, 0xc00ab607d0, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:143 +0x5ce github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00832c140, 0xc019492a00, 0x9d, 0xc00ab607d0, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00832c140, 0xc00ab607d0, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00832c140, 0xc00ab607d0, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x8) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 29 [runnable]: github.com/VKCOM/noverify/src/linter.(*parseWaiter).Finish(0xc0145718a8) /Users/petrmakhnev/noverify/src/linter/limits.go:62 +0x39 github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc00832c0f0, 0xc015ccf680, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc011168cc0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:157 +0x77a github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00832c0f0, 0xc0197c8320, 0x99, 0xc015ccf680, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00832c0f0, 0xc015ccf680, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00832c0f0, 0xc015ccf680, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0x9) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 30 [runnable]: github.com/VKCOM/noverify/src/linter.(*parseWaiter).Finish(0xc00275f8a8) /Users/petrmakhnev/noverify/src/linter/limits.go:62 +0x39 github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc0067bef00, 0xc013549f20, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc00cd3b290, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:157 +0x77a github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc0067bef00, 0xc008f9fce0, 0xa4, 0xc013549f20, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc0067bef00, 0xc013549f20, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc0067bef00, 0xc013549f20, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0xa) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 31 [running]: goroutine running on other thread; stack unavailable created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f goroutine 31 [running]: runtime.throw(0x17a4c46, 0x15) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/panic.go:1117 +0x72 fp=0xc00a747e50 sp=0xc00a747e20 pc=0x10375f2 runtime.mapdelete_faststr(0x169f600, 0xc00001ebd0, 0xc0086d5810, 0xd) /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/map_faststr.go:382 +0x3a8 fp=0xc00a747eb8 sp=0xc00a747e50 pc=0x1014848 github.com/VKCOM/noverify/src/types.Map.Erase(...) /Users/petrmakhnev/noverify/src/types/map.go:351 github.com/VKCOM/noverify/src/linter.(*andWalker).EnterNode(0xc0095eecc0, 0x18570b8, 0xc008efacc0, 0xc00a748058) /Users/petrmakhnev/noverify/src/linter/and_walker.go:136 +0xaae fp=0xc00a748010 sp=0xc00a747eb8 pc=0x151560e github.com/VKCOM/noverify/src/ir.(*InstanceOfExpr).Walk(0xc008efacc0, 0x1857ce8, 0xc0095eecc0) /Users/petrmakhnev/noverify/src/ir/walk.go:1045 +0x4b fp=0xc00a748040 sp=0xc00a748010 pc=0x114588b github.com/VKCOM/noverify/src/ir.(*BooleanNotExpr).Walk(0xc009c049a0, 0x1857ce8, 0xc0095eecc0) /Users/petrmakhnev/noverify/src/ir/walk.go:383 +0xb2 fp=0xc00a748070 sp=0xc00a748040 pc=0x1141952 github.com/VKCOM/noverify/src/linter.(*andWalker).EnterNode(0xc0095eecc0, 0x1856820, 0xc008efac90, 0xc0159f0680) /Users/petrmakhnev/noverify/src/linter/and_walker.go:77 +0x17c4 fp=0xc00a7481c8 sp=0xc00a748070 pc=0x1516324 github.com/VKCOM/noverify/src/ir.(*BooleanAndExpr).Walk(0xc008efac90, 0x1857ce8, 0xc0095eecc0) /Users/petrmakhnev/noverify/src/ir/walk.go:366 +0x4b fp=0xc00a7481f8 sp=0xc00a7481c8 pc=0x11417cb github.com/VKCOM/noverify/src/ir.(*ParenExpr).Walk(0xc008efac30, 0x1857ce8, 0xc0095eecc0) /Users/petrmakhnev/noverify/src/ir/walk.go:1382 +0xb2 fp=0xc00a748228 sp=0xc00a7481f8 pc=0x11477f2 github.com/VKCOM/noverify/src/linter.(*andWalker).EnterNode(0xc0095eecc0, 0x1856820, 0xc008efab70, 0xc0095eecc0) /Users/petrmakhnev/noverify/src/linter/and_walker.go:77 +0x17c4 fp=0xc00a748380 sp=0xc00a748228 pc=0x1516324 github.com/VKCOM/noverify/src/ir.(*BooleanAndExpr).Walk(0xc008efab70, 0x1857ce8, 0xc0095eecc0) /Users/petrmakhnev/noverify/src/ir/walk.go:366 +0x4b fp=0xc00a7483b0 sp=0xc00a748380 pc=0x11417cb github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf.func3() /Users/petrmakhnev/noverify/src/linter/block.go:1564 +0xf0 fp=0xc00a748460 sp=0xc00a7483b0 pc=0x1565a30 github.com/VKCOM/noverify/src/linter.(*blockWalker).withSpecificContext(...) /Users/petrmakhnev/noverify/src/linter/block.go:668 github.com/VKCOM/noverify/src/linter.(*blockWalker).handleIf(0xc009c32370, 0xc00dbb25a0, 0xc00dbb2500) /Users/petrmakhnev/noverify/src/linter/block.go:1556 +0x231 fp=0xc00a748680 sp=0xc00a748460 pc=0x1520831 github.com/VKCOM/noverify/src/linter.(*blockWalker).EnterNode(0xc009c32370, 0x1857040, 0xc00dbb25a0, 0xc00dbb2ea0) /Users/petrmakhnev/noverify/src/linter/block.go:362 +0x1227 fp=0xc00a748770 sp=0xc00a748680 pc=0x1518a07 github.com/VKCOM/noverify/src/ir.(*IfStmt).Walk(0xc00dbb25a0, 0x1857d10, 0xc009c32370) /Users/petrmakhnev/noverify/src/ir/walk.go:1009 +0x4b fp=0xc00a7487b8 sp=0xc00a748770 pc=0x114554b github.com/VKCOM/noverify/src/linter.(*rootWalker).handleFuncStmts(0xc005064300, 0xc008efb8c0, 0x1, 0x1, 0x0, 0x0, 0x0, 0xc008efab40, 0x3, 0x3, ...) /Users/petrmakhnev/noverify/src/linter/root.go:444 +0x498 fp=0xc00a7488f8 sp=0xc00a7487b8 pc=0x154bcb8 github.com/VKCOM/noverify/src/linter.(*rootWalker).enterClassMethod(0xc005064300, 0xc0072ebc20, 0xc0072ebc20) /Users/petrmakhnev/noverify/src/linter/root.go:1050 +0x85e fp=0xc00a748e98 sp=0xc00a7488f8 pc=0x1550a3e github.com/VKCOM/noverify/src/linter.(*rootWalker).EnterNode(0xc005064300, 0x18569b0, 0xc0072ebc20, 0xc00a749501) /Users/petrmakhnev/noverify/src/linter/root.go:236 +0x180d fp=0xc00a7495b0 sp=0xc00a748e98 pc=0x154982d github.com/VKCOM/noverify/src/ir.(*ClassMethodStmt).Walk(0xc0072ebc20, 0x1857d38, 0xc005064300) /Users/petrmakhnev/noverify/src/ir/walk.go:490 +0x4b fp=0xc00a749608 sp=0xc00a7495b0 pc=0x11423cb github.com/VKCOM/noverify/src/ir.(*ClassStmt).Walk(0xc009c322c0, 0x1857d38, 0xc005064300) /Users/petrmakhnev/noverify/src/ir/walk.go:534 +0x189 fp=0xc00a749660 sp=0xc00a749608 pc=0x1142789 github.com/VKCOM/noverify/src/ir.(*Root).Walk(0xc008efa8d0, 0x1857d38, 0xc005064300) /Users/petrmakhnev/noverify/src/ir/walk.go:1533 +0xac fp=0xc00a7496a8 sp=0xc00a749660 pc=0x114856c github.com/VKCOM/noverify/src/linter.(*Worker).analyzeFile(0xc00703bcc0, 0xc0095eeba0, 0xc008efa8d0, 0x48c, 0x48c, 0xc0095eeba0) /Users/petrmakhnev/noverify/src/linter/worker.go:302 +0x4e5 fp=0xc00a749828 sp=0xc00a7496a8 pc=0x1563665 github.com/VKCOM/noverify/src/linter.(*Worker).ParseContents(0xc00703bcc0, 0xc013549ec0, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:143 +0x5ce fp=0xc00a7499d0 sp=0xc00a749828 pc=0x1561a6e github.com/VKCOM/noverify/src/linter.(*Worker).parseWithCache(0xc00703bcc0, 0xc019237f40, 0xa0, 0xc013549ec0, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:161 +0x93 fp=0xc00a749ab0 sp=0xc00a7499d0 pc=0x15621b3 github.com/VKCOM/noverify/src/linter.(*Worker).IndexFile(0xc00703bcc0, 0xc013549ec0, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:216 +0x66c fp=0xc00a749cc0 sp=0xc00a749ab0 pc=0x156292c github.com/VKCOM/noverify/src/linter.(*Worker).doParseFile(0xc00703bcc0, 0xc013549ec0, 0x53, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /Users/petrmakhnev/noverify/src/linter/worker.go:251 +0x525 fp=0xc00a749e70 sp=0xc00a749cc0 pc=0x15630a5 github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles.func3(0xc0066c7300, 0xc00000c6a8, 0x0, 0xc0066c7380, 0xc0066c73e0, 0xc003fc3720, 0xb) /Users/petrmakhnev/noverify/src/linter/linter.go:104 +0x21e fp=0xc00a749fa8 sp=0xc00a749e70 pc=0x156791e runtime.goexit() /opt/homebrew/Cellar/go/1.16.6/libexec/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc00a749fb0 sp=0xc00a749fa8 pc=0x1070921 created by github.com/VKCOM/noverify/src/linter.(*Linter).analyzeFiles /Users/petrmakhnev/noverify/src/linter/linter.go:94 +0x25f
Hello, thanks for reporting the bug. It will be fixed in #1142.
PHP Version: 7.4
OS: macOS
Run command:
The minimal code in which the bug appears:
I don't think it's related to the actual code, but is a race condition. On a second run there was no crash.
Actual Behavior:
fatal error: concurrent map writes
followed by a panicExpected Behavior:
To run without an internal error, and produce a list of findings.
[Optional] Details:
Output: