amit-davidson / Chronos

Chronos - A static race detector for the go language
MIT License
424 stars 11 forks source link

SIGSEGV on analysing a repo #12

Closed mpldr closed 3 years ago

mpldr commented 3 years ago

Command executed:

chronos --pkg gitlab.com/poldi1405/bulkrename --file main.go

Version: 29ca1294314363b29d66bd61348f38a8cef1a1b6

Output:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x6c8598]

goroutine 1 [running]:
github.com/amit-davidson/Chronos/ssaUtils.GetDefersSummary(0xc00a036640, 0xc002f7ef20, 0x9fd698, 0x0, 0x0, 0xc002211f50)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/CFG.go:95 +0x238
github.com/amit-davidson/Chronos/ssaUtils.HandleFunction(0xc00a036640, 0xc005090780, 0x1)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/Functions.go:177 +0x1dc
github.com/amit-davidson/Chronos/ssaUtils.HandleCallCommon(0xc00a036640, 0xc00617a140, 0x405529, 0x0)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/Functions.go:45 +0x49b
github.com/amit-davidson/Chronos/ssaUtils.GetBlockSummary(0xc00a036640, 0xc006161ef0, 0x744980)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/Functions.go:133 +0x4ff
github.com/amit-davidson/Chronos/ssaUtils.GetBlocksSummary.func1(0xc00a036640, 0xc006161ef0, 0x0)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/CFG.go:58 +0x35
github.com/amit-davidson/Chronos/ssaUtils.(*CFG).traverseGraph(0xc0018c9a40, 0xc00a036640, 0xc006161ef0)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/CFG.go:121 +0x1f0
github.com/amit-davidson/Chronos/ssaUtils.GetBlocksSummary(0xc00a036640, 0xc006161ef0, 0x7ffd54d59bbf, 0x1f)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/CFG.go:69 +0xdb
github.com/amit-davidson/Chronos/ssaUtils.HandleFunction(0xc00a036640, 0xc005090500, 0x1)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/Functions.go:174 +0x19f
github.com/amit-davidson/Chronos/ssaUtils.HandleCallCommon(0xc00a036640, 0xc0018c9980, 0x4054c9, 0x0)
    /home/moritz/go/src/github.com/amit-davidson/Chronos/ssaUtils/Functions.go:45 +0x49b
main.main()
    /home/moritz/go/src/github.com/amit-davidson/Chronos/cmd/chronos/main.go:34 +0x43c
mpldr commented 3 years ago

The same happen when the repo is checked out

amit-davidson commented 3 years ago

@poldi1405 Thanks for reporting! It's a bug related to the construction of the control flow graph. It happens when there is more than 1 return. I'll fix that.

amit-davidson commented 3 years ago

Fixed by: https://github.com/amit-davidson/Chronos/pull/19