amit-davidson / Chronos

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

Panic while self check #8

Closed ninedraft closed 3 years ago

ninedraft commented 3 years ago

Runnig chronos on ./cmd/main.go will cause a panic

Call: chronos -file ./cmd/main.go

Result:

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

goroutine 1 [running]:
github.com/amit-davidson/Chronos/ssaUtils.GetDefersSummary(0xc01ea325c0, 0xc019c78790, 0xa00880, 0x0, 0x0, 0xc011cfec80)
    /dev/Chronos/ssaUtils/CFG.go:94 +0x238
github.com/amit-davidson/Chronos/ssaUtils.HandleFunction(0xc01ea325c0, 0xc010bc68c0, 0x1)
    /dev/Chronos/ssaUtils/Functions.go:177 +0x1dc
github.com/amit-davidson/Chronos/ssaUtils.HandleCallCommon(0xc01ea325c0, 0xc010d982c0, 0x9b09b5, 0x0)
    /dev/Chronos/ssaUtils/Functions.go:45 +0x49b
github.com/amit-davidson/Chronos/ssaUtils.GetBlockSummary(0xc01ea325c0, 0xc0037c33f0, 0x1)
    /dev/Chronos/ssaUtils/Functions.go:133 +0x4ff
github.com/amit-davidson/Chronos/ssaUtils.GetBlocksSummary.func1(0xc01ea325c0, 0xc0037c33f0, 0x2)
    /dev/Chronos/ssaUtils/CFG.go:57 +0x35
github.com/amit-davidson/Chronos/ssaUtils.(*CFG).traverseGraph(0xc01ea295c0, 0xc01ea325c0, 0xc0037c33f0)
    /dev/Chronos/ssaUtils/CFG.go:114 +0x11d
github.com/amit-davidson/Chronos/ssaUtils.(*CFG).traverseGraph(0xc01ea295c0, 0xc01ea325c0, 0xc0037c3340)
    /dev/Chronos/ssaUtils/CFG.go:131 +0x1bd
github.com/amit-davidson/Chronos/ssaUtils.(*CFG).traverseGraph(0xc01ea295c0, 0xc01ea325c0, 0xc0037c3290)
    /dev/Chronos/ssaUtils/CFG.go:131 +0x1bd
github.com/amit-davidson/Chronos/ssaUtils.GetBlocksSummary(0xc01ea325c0, 0xc0037c3290, 0xc001d62240, 0x21)
    /dev/Chronos/ssaUtils/CFG.go:68 +0xdb
github.com/amit-davidson/Chronos/ssaUtils.HandleFunction(0xc01ea325c0, 0xc010c1ea00, 0x1)
    /dev/Chronos/ssaUtils/Functions.go:174 +0x19f
github.com/amit-davidson/Chronos/ssaUtils.HandleCallCommon(0xc01ea325c0, 0xc01ea29500, 0x9b0810, 0x0)
    /dev/Chronos/ssaUtils/Functions.go:45 +0x49b
main.main()
    /dev/Chronos/cmd/main.go:34 +0x43c
amit-davidson commented 3 years ago

Thanks. I will look into that. There are some panics since I didn't implement all the features of the language regarding the static analysis so it's probably related to that.

amit-davidson commented 3 years ago

It's a bug related to the construction of the control flow graph. It happens when there is more than 1 return (Inside the loadPackage function). I'll fix that.

amit-davidson commented 3 years ago

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