Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linter segfault when clojure.core/list is excluded in a namespace containing a macro #419

Closed
benalbrecht opened this issue Sep 10, 2020 · 0 comments · Fixed by #420
Closed

Comments

@benalbrecht
Copy link
Contributor

benalbrecht commented Sep 10, 2020

joker crashes when running joker --lint against the following clojure source file:

(ns foo
  (:refer-clojure :exclude [list]))

(defmacro bar [baz]
  `(identity ~baz))

stack trace:

$ joker --lint foo.clj 
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=0x74190d]

goroutine 1 [running]:
github.com/candid82/joker/core.TryParse.func1(0xc00056bb18)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1863 +0x16b
panic(0x923600, 0xe58640)
        /usr/local/Cellar/go/1.14/libexec/src/runtime/panic.go:967 +0x15d
github.com/candid82/joker/core.parseSymbol(0xb0ae60, 0xc0001d95f0, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1808 +0x4cd
github.com/candid82/joker/core.Parse(0xb0ae60, 0xc0001d95f0, 0xc00056bbb8, 0xb0d200, 0xc000438980)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1834 +0x3f7
github.com/candid82/joker/core.parseList(0xb0a260, 0xc000438980, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1643 +0x336
github.com/candid82/joker/core.Parse(0xb0a260, 0xc000438980, 0xc00056bbb8, 0x129aba0, 0xe52b00)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseSeq(0xb0d200, 0xc000438b00, 0xc00056bbb8, 0x0, 0x0, 0xc000567210)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:625 +0xfa
github.com/candid82/joker/core.parseList(0xb0a260, 0xc000438b40, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1664 +0x5de
github.com/candid82/joker/core.Parse(0xb0a260, 0xc000438b40, 0xc00056bbb8, 0x129aba0, 0xe56a00)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseSeq(0xb0d200, 0xc000438bc0, 0xc00056bbb8, 0x0, 0x0, 0xc000567a78)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:625 +0xfa
github.com/candid82/joker/core.parseList(0xb0a260, 0xc000438e00, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1664 +0x5de
github.com/candid82/joker/core.Parse(0xb0a260, 0xc000438e00, 0xc00056bbb8, 0x129aba0, 0x7f1378978358)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseBody(0xb0d200, 0xc000438fc0, 0xc00056bbb8, 0x0, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:777 +0x14a
github.com/candid82/joker/core.addArity(0xc0004d8a80, 0xb0d200, 0xc0004392c0, 0xc00056bbb8)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:856 +0x2af
github.com/candid82/joker/core.parseFn(0xb0a260, 0xc0004395c0, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:947 +0x483
github.com/candid82/joker/core.parseList(0xb0a260, 0xc0004395c0, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1571 +0x2641
github.com/candid82/joker/core.Parse(0xb0a260, 0xc0004395c0, 0xc00056bbb8, 0xb0a200, 0xc0004395c0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseList(0xb0a260, 0xc000513600, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1539 +0xbe
github.com/candid82/joker/core.Parse(0xb0a260, 0xc000513600, 0xc00056bbb8, 0xc000513600, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseDef(0xb0a260, 0xc000513a80, 0xc00056bbb8, 0xb0d200, 0xc000513a80)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:734 +0x807
github.com/candid82/joker/core.parseList(0xb0a260, 0xc000513a80, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1587 +0x2415
github.com/candid82/joker/core.Parse(0xb0a260, 0xc000513a80, 0xc00056bbb8, 0xb0a200, 0xc000513a80)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseList(0xb0a260, 0xc000512300, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1539 +0xbe
github.com/candid82/joker/core.Parse(0xb0a260, 0xc000512300, 0xc00056bbb8, 0x129aba0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseBody(0xb0d200, 0xc0005124c0, 0xc00056bbb8, 0x0, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:777 +0x14a
github.com/candid82/joker/core.parseList(0xb0a260, 0xc000512500, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1620 +0x18fc
github.com/candid82/joker/core.Parse(0xb0a260, 0xc000512500, 0xc00056bbb8, 0xb0a200, 0xc000512500)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.parseList(0xb0a260, 0xc0000d0f00, 0xc00056bbb8, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1539 +0xbe
github.com/candid82/joker/core.Parse(0xb0a260, 0xc0000d0f00, 0xc00056bbb8, 0xb08aa0, 0xc000435f40)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1832 +0x524
github.com/candid82/joker/core.TryParse(0xb0a260, 0xc0000d0f00, 0xc00056bbb8, 0x0, 0x0, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/parse.go:1867 +0x78
github.com/candid82/joker/core.ProcessReader(0xc000554be0, 0x7ffd25b601e4, 0x7, 0x2, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/core/procs.go:1745 +0x30d
main.processFile(0x7ffd25b601e4, 0x7, 0x2, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/main.go:113 +0x1eb
main.lintFile(0x7ffd25b601e4, 0x7, 0x0, 0x0, 0x0)
        /Users/candid/go/src/github.com/candid82/joker/main.go:277 +0xb7
main.main()
        /Users/candid/go/src/github.com/candid82/joker/main.go:834 +0x1181
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant