Giter Club home page Giter Club logo

go-safer's Issues

panic SIGSEGV running on my project

tried to execute go-safer and got:

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

goroutine 79 [running]:
go/types.(*Checker).handleBailout(0xc00034a200, 0xc0005cdbd0)
        /usr/local/go/src/go/types/check.go:367 +0x88
panic({0x71d200?, 0x9a8b20?})
        /usr/local/go/src/runtime/panic.go:770 +0x132
go/types.(*StdSizes).Sizeof(0x0, {0x7eb550, 0x9ac7c0})
        /usr/local/go/src/go/types/sizes.go:228 +0x31e
go/types.(*Config).sizeof(...)
        /usr/local/go/src/go/types/sizes.go:333
go/types.representableConst.func1({0x7eb550?, 0x9ac7c0?})
        /usr/local/go/src/go/types/const.go:76 +0x9e
go/types.representableConst({0x7ed378, 0x9a13a0}, 0xc00034a200, 0x9ac7c0, 0xc0005cbfe8)
        /usr/local/go/src/go/types/const.go:92 +0x192
go/types.(*Checker).representation(0xc00034a200, 0xc0005c4e80, 0x9ac7c0)
        /usr/local/go/src/go/types/const.go:256 +0x65
go/types.(*Checker).implicitTypeAndValue(0xc00034a200, 0xc0005c4e80, {0x7eb550, 0x9ac7c0})
        /usr/local/go/src/go/types/expr.go:375 +0x30d
go/types.(*Checker).convertUntyped(0xc00034a200, 0xc0005c4e80, {0x7eb550, 0x9ac7c0})
        /usr/local/go/src/go/types/const.go:289 +0x3f
go/types.(*Checker).matchTypes(0xc00034a200, 0xc0005c4e40, 0xc0005c4e80)
        /usr/local/go/src/go/types/expr.go:926 +0x79
go/types.(*Checker).binary(0xc00034a200, 0xc0005c4e40, {0x7ec950, 0xc0004a20f0}, {0x7ec680, 0xc0005b0100}, {0x7ece60, 0xc0005b0120}, 0x28, 0x3a39d)
        /usr/local/go/src/go/types/expr.go:800 +0x166
go/types.(*Checker).exprInternal(0xc00034a200, 0x0, 0xc0005c4e40, {0x7ec950, 0xc0004a20f0}, {0x0, 0x0})
        /usr/local/go/src/go/types/expr.go:1416 +0x206
go/types.(*Checker).rawExpr(0xc00034a200, 0x0, 0xc0005c4e40, {0x7ec950?, 0xc0004a20f0?}, {0x0?, 0x0?}, 0x0)
        /usr/local/go/src/go/types/expr.go:979 +0x19e
go/types.(*Checker).expr(0xc00034a200, 0x7ebbe0?, 0xc0005c4e40, {0x7ec950?, 0xc0004a20f0?})
        /usr/local/go/src/go/types/expr.go:1513 +0x30
go/types.(*Checker).stmt(0xc00034a200, 0x0, {0x7eccb0, 0xc0005c4100})
        /usr/local/go/src/go/types/stmt.go:570 +0x11f2
go/types.(*Checker).stmtList(0xc00034a200, 0x0, {0xc0005b0280?, 0x0?, 0x0?})
        /usr/local/go/src/go/types/stmt.go:121 +0x85
go/types.(*Checker).funcBody(0xc00034a200, 0x7eb550?, {0xc000438068?, 0x9ac9a0?}, 0xc0005c4b80, 0xc0004a2180, {0x0?, 0x0?})
        /usr/local/go/src/go/types/stmt.go:41 +0x331
go/types.(*Checker).funcDecl.func1()
        /usr/local/go/src/go/types/decl.go:852 +0x3a
go/types.(*Checker).processDelayed(0xc00034a200, 0x0)
        /usr/local/go/src/go/types/check.go:467 +0x162
go/types.(*Checker).checkFiles(0xc00034a200, {0xc0004fc000, 0x1, 0x1})
        /usr/local/go/src/go/types/check.go:411 +0x1cc
go/types.(*Checker).Files(...)
        /usr/local/go/src/go/types/check.go:372
golang.org/x/tools/go/packages.(*loader).loadPackage(0xc000102000, 0xc000180f60)
        /home/da5h/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:1052 +0xa72
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
        /home/da5h/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:851 +0x1a9
sync.(*Once).doSlow(0x0?, 0x0?)
        /usr/local/go/src/sync/once.go:74 +0xc2
sync.(*Once).Do(...)
        /usr/local/go/src/sync/once.go:65
golang.org/x/tools/go/packages.(*loader).loadRecursive(0x0?, 0x0?)
        /home/da5h/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:839 +0x4a
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1.1(0x0?)
        /home/da5h/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:846 +0x26
created by golang.org/x/tools/go/packages.(*loader).loadRecursive.func1 in goroutine 67
        /home/da5h/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:845 +0x94

Panic while running on github.com/prometheus/prometheus

Here are the steps I followed:

$ cd ~/go/src/github.com/prometheus/prometheus
$ git checkout master
$ git pull origin master
$ go-safer ./...
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x11a24f7]

goroutine 14112 [running]:
github.com/jlauinger/go-safer/passes/structcast.detectUnsafeCast(0x137a6a0, 0xc014df65c0, 0x0, 0x0, 0x0, 0x0, 0x2c3b0a00)
	/Users/s.rabot/go/src/github.com/jlauinger/go-safer/passes/structcast/structcast.go:101 +0xd7
github.com/jlauinger/go-safer/passes/structcast.structCastWithMismatchingTargetLength(0xc014df65c0, 0xc04dc9d5e0, 0x1376e00)
	/Users/s.rabot/go/src/github.com/jlauinger/go-safer/passes/structcast/structcast.go:47 +0x4b
github.com/jlauinger/go-safer/passes/structcast.run.func1(0x1376e20, 0xc014df65c0)
	/Users/s.rabot/go/src/github.com/jlauinger/go-safer/passes/structcast/structcast.go:33 +0x4e
golang.org/x/tools/go/ast/inspector.(*Inspector).Preorder(0xc04dcaa9c0, 0xc002335550, 0x1, 0x1, 0xc073d57d40)
	/Users/s.rabot/go/src/golang.org/x/tools/go/ast/inspector/inspector.go:77 +0xa2
github.com/jlauinger/go-safer/passes/structcast.run(0xc04dc9d5e0, 0xc045c44870, 0x14dd000, 0xc0300c2938, 0xc0023355c0)
	/Users/s.rabot/go/src/github.com/jlauinger/go-safer/passes/structcast/structcast.go:30 +0xcc
golang.org/x/tools/go/analysis/internal/checker.(*action).execOnce(0xc04cf41860)
	/Users/s.rabot/go/src/golang.org/x/tools/go/analysis/internal/checker/checker.go:658 +0x75f
sync.(*Once).doSlow(0xc04cf41860, 0xc002335790)
	/usr/local/go/src/sync/once.go:66 +0xec
sync.(*Once).Do(...)
	/usr/local/go/src/sync/once.go:57
golang.org/x/tools/go/analysis/internal/checker.(*action).exec(0xc04cf41860)
	/Users/s.rabot/go/src/golang.org/x/tools/go/analysis/internal/checker/checker.go:577 +0x65
golang.org/x/tools/go/analysis/internal/checker.execAll.func1(0xc04cf41860)
	/Users/s.rabot/go/src/golang.org/x/tools/go/analysis/internal/checker/checker.go:565 +0x34
created by golang.org/x/tools/go/analysis/internal/checker.execAll
	/Users/s.rabot/go/src/golang.org/x/tools/go/analysis/internal/checker/checker.go:571 +0x125
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN="/Users/s.rabot/go/bin"
GOCACHE="/Users/s.rabot/Library/Caches/go-build"
GOENV="/Users/s.rabot/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/s.rabot/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/s.rabot/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/s.rabot/go/src/github.com/prometheus/prometheus/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/z0/rcywz4nn3jg6g96h67c_4xzdw31lvl/T/go-build826743891=/tmp/go-build -gno-record-gcc-switches -fno-common"

Stacktrace

I get this:

go-safer ./...
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x103062754]

goroutine 291 [running]:
go/types.(*Checker).handleBailout(0x14000502c00, 0x14000751c38)
        /usr/local/go/src/go/types/check.go:367 +0x9c
panic({0x103232520?, 0x10342bcc0?})
        /usr/local/go/src/runtime/panic.go:770 +0x124
go/types.(*StdSizes).Sizeof(0x0, {0x103285710, 0x10342f940})
        /usr/local/go/src/go/types/sizes.go:228 +0x314
go/types.(*Config).sizeof(...)
        /usr/local/go/src/go/types/sizes.go:333
go/types.representableConst.func1({0x103285710?, 0x10342f940?})
        /usr/local/go/src/go/types/const.go:76 +0x9c
go/types.representableConst({0x103287450, 0x1034245a0}, 0x14000502c00, 0x10342f940, 0x1400012bc68)
        /usr/local/go/src/go/types/const.go:106 +0x2b0
go/types.(*Checker).conversion.func1({0x103285710?, 0x10342f940?}, 0x1400012bc68)
        /usr/local/go/src/go/types/conversions.go:24 +0x74
go/types.(*Checker).conversion(0x14000502c00, 0x1400012bc40, {0x103285710, 0x10342f940})
        /usr/local/go/src/go/types/conversions.go:44 +0x18c
go/types.(*Checker).callExpr(0x14000502c00, 0x1400012bc40, 0x140004e8040)
        /usr/local/go/src/go/types/call.go:224 +0xa54
go/types.(*Checker).exprInternal(0x14000502c00, 0x0, 0x1400012bc40, {0x103286758, 0x140004e8040}, {0x0, 0x0})
        /usr/local/go/src/go/types/expr.go:1374 +0xd0
go/types.(*Checker).rawExpr(0x14000502c00, 0x0, 0x1400012bc40, {0x103286758?, 0x140004e8040?}, {0x0?, 0x0?}, 0x0)
        /usr/local/go/src/go/types/expr.go:979 +0x12c
go/types.(*Checker).expr(0x14000502c00, 0x16?, 0x1400012bc40, {0x103286758?, 0x140004e8040?})
        /usr/local/go/src/go/types/expr.go:1513 +0x38
go/types.(*Checker).unary(0x14000502c00, 0x1400012bc40, 0x140007ae140)
        /usr/local/go/src/go/types/expr.go:127 +0x44
go/types.(*Checker).exprInternal(0x14000502c00, 0x0, 0x1400012bc40, {0x103286a88, 0x140007ae140}, {0x0, 0x0})
        /usr/local/go/src/go/types/expr.go:1406 +0x1328
go/types.(*Checker).rawExpr(0x14000502c00, 0x0, 0x1400012bc40, {0x103286a88?, 0x140007ae140?}, {0x0?, 0x0?}, 0x0)
        /usr/local/go/src/go/types/expr.go:979 +0x12c
go/types.(*Checker).expr(0x14000502c00, 0x6?, 0x1400012bc40, {0x103286a88?, 0x140007ae140?})
        /usr/local/go/src/go/types/expr.go:1513 +0x38
go/types.(*Checker).binary(0x14000502c00, 0x1400012bc40, {0x103286a58, 0x14000724150}, {0x103286a88, 0x140007ae140}, {0x103286f68, 0x140007ae160}, 0x15, 0x931c)
        /usr/local/go/src/go/types/expr.go:783 +0x70
go/types.(*Checker).exprInternal(0x14000502c00, 0x0, 0x1400012bc40, {0x103286a58, 0x14000724150}, {0x0, 0x0})
        /usr/local/go/src/go/types/expr.go:1416 +0x1d4
go/types.(*Checker).rawExpr(0x14000502c00, 0x0, 0x1400012bc40, {0x103286a58?, 0x14000724150?}, {0x0?, 0x0?}, 0x0)
        /usr/local/go/src/go/types/expr.go:979 +0x12c
go/types.(*Checker).exprInternal(0x14000502c00, 0x0, 0x1400012bc40, {0x1032866c8, 0x140007ae180}, {0x0, 0x0})
        /usr/local/go/src/go/types/expr.go:1320 +0x150
go/types.(*Checker).rawExpr(0x14000502c00, 0x0, 0x1400012bc40, {0x1032866c8?, 0x140007ae180?}, {0x0?, 0x0?}, 0x0)
        /usr/local/go/src/go/types/expr.go:979 +0x12c
go/types.(*Checker).expr(0x14000502c00, 0x1030071c0?, 0x1400012bc40, {0x1032866c8?, 0x140007ae180?})
        /usr/local/go/src/go/types/expr.go:1513 +0x38
go/types.(*Checker).binary(0x14000502c00, 0x1400012bc00, {0x103286a58, 0x14000724180}, {0x103286f68, 0x140007ae0e0}, {0x1032866c8, 0x140007ae180}, 0x14, 0x930f)
        /usr/local/go/src/go/types/expr.go:784 +0x88
go/types.(*Checker).exprInternal(0x14000502c00, 0x0, 0x1400012bc00, {0x103286a58, 0x14000724180}, {0x0, 0x0})
        /usr/local/go/src/go/types/expr.go:1416 +0x1d4
go/types.(*Checker).rawExpr(0x14000502c00, 0x0, 0x1400012bc00, {0x103286a58?, 0x14000724180?}, {0x0?, 0x0?}, 0x0)
        /usr/local/go/src/go/types/expr.go:979 +0x12c
go/types.(*Checker).expr(0x14000502c00, 0x1400045a0f0?, 0x1400012bc00, {0x103286a58?, 0x14000724180?})
        /usr/local/go/src/go/types/expr.go:1513 +0x38
go/types.(*Checker).constDecl(0x14000502c00, 0x14000723680, {0x0, 0x0}, {0x103286a58, 0x14000724180}, 0x0)
        /usr/local/go/src/go/types/decl.go:488 +0x23c
go/types.(*Checker).objDecl(0x14000502c00, {0x103289d78, 0x14000723680}, 0x0)
        /usr/local/go/src/go/types/decl.go:191 +0x84c
go/types.(*Checker).packageObjects(0x14000502c00)
        /usr/local/go/src/go/types/resolver.go:693 +0x468
go/types.(*Checker).checkFiles(0x14000502c00, {0x14000218918, 0x3, 0x3})
        /usr/local/go/src/go/types/check.go:408 +0x164
go/types.(*Checker).Files(...)
        /usr/local/go/src/go/types/check.go:372
golang.org/x/tools/go/packages.(*loader).loadPackage(0x1400015c0c0, 0x14000134c60)
        /Users/Marcello/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:881 +0x5d0
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
        /Users/Marcello/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:728 +0x178
sync.(*Once).doSlow(0x0?, 0x0?)
        /usr/local/go/src/sync/once.go:74 +0x100
sync.(*Once).Do(...)
        /usr/local/go/src/sync/once.go:65
golang.org/x/tools/go/packages.(*loader).loadRecursive(0x0?, 0x0?)
        /Users/Marcello/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:716 +0x50
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1.1(0x0?)
        /Users/Marcello/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:723 +0x30
created by golang.org/x/tools/go/packages.(*loader).loadRecursive.func1 in goroutine 289
        /Users/Marcello/go/pkg/mod/golang.org/x/[email protected]/go/packages/packages.go:722 +0x84

Fix import path

Steps to reproduce the problem:

$ go get github.com/jlauinger/go-safer
package go-safer/passes/sliceheader: unrecognized import path "go-safer/passes/sliceheader" (import path does not begin with hostname)

Expected behavior: No warning when getting the project

Observed behavior: The import path isn't set "go-like" (https://golang.org/cmd/go/#hdr-Import_path_syntax).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.