go-gitea / gitea

Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD
https://gitea.com
MIT License
44.6k stars 5.45k forks source link

Random 500 Error when trying open commit detail #10503

Closed petrkr closed 4 years ago

petrkr commented 4 years ago

Description

For user is used LDAP/AD

Sometimes (still do not know what cause that) error 500 appear when trying click on commit detail.. (URL domain.tld/gitea/project/repo/commit/COMMIT_HASH)

Here is log

2020/02/27 15:46:27 ...les/context/panic.go:34:1() [E] PANIC:: runtime error: invalid memory address or nil pointer dereference
        /usr/lib/golang/src/runtime/panic.go:513 (0x42df28)
                gopanic: reflectcall(nil, unsafe.Pointer(d.fn), deferArgs(d), uint32(d.siz), uint32(d.siz))
        /usr/lib/golang/src/text/template/exec.go:160 (0x7187df)
                errRecover: panic(e)
        /usr/lib/golang/src/runtime/asm_amd64.s:522 (0x45c7da)
                call32: CALLFN(·call32, 32)
        /usr/lib/golang/src/runtime/panic.go:513 (0x42df28)
                gopanic: reflectcall(nil, unsafe.Pointer(d.fn), deferArgs(d), uint32(d.siz), uint32(d.siz))
        /usr/lib/golang/src/runtime/panic.go:82 (0x42d07d)
                panicmem: panic(memoryError)
        /usr/lib/golang/src/runtime/signal_unix.go:390 (0x444011)
                sigpanic: panicmem()
        /root/go/src/code.gitea.io/gitea/modules/git/blob.go:27 (0x9751a2)
        /root/go/src/code.gitea.io/gitea/modules/git/commit.go:149 (0x97701a)
        /root/go/src/code.gitea.io/gitea/routers/repo/commit.go:240 (0x12ed32d)
        /usr/lib/golang/src/runtime/asm_amd64.s:522 (0x45c7da)
                call32: CALLFN(·call32, 32)
        /usr/lib/golang/src/reflect/value.go:447 (0x4bbf43)
                Value.call: call(frametype, fn, args, uint32(frametype.size), uint32(retOffset))
        /usr/lib/golang/src/reflect/value.go:308 (0x4bb9d3)
                Value.Call: return v.call("Call", in)
        /usr/lib/golang/src/text/template/funcs.go:278 (0x723f8f)
                call: result := v.Call(argv)
        /usr/lib/golang/src/runtime/asm_amd64.s:524 (0x45c8f1)
                call128: CALLFN(·call128, 128)
        /usr/lib/golang/src/reflect/value.go:447 (0x4bbf43)
                Value.call: call(frametype, fn, args, uint32(frametype.size), uint32(retOffset))
        /usr/lib/golang/src/reflect/value.go:308 (0x4bb9d3)
                Value.Call: return v.call("Call", in)
        /usr/lib/golang/src/text/template/exec.go:695 (0x71e0ec)
                (*state).evalCall: result := fun.Call(argv)
        /usr/lib/golang/src/text/template/exec.go:563 (0x71ca31)
                (*state).evalFunction: return s.evalCall(dot, function, cmd, name, args, final)
        /usr/lib/golang/src/text/template/exec.go:460 (0x71b798)
                (*state).evalCommand: return s.evalFunction(dot, n, cmd, cmd.Args, final)
        /usr/lib/golang/src/text/template/exec.go:429 (0x71ac85)
                (*state).evalPipeline: value = s.evalCommand(dot, cmd, value) // previous value is this one's final arg.
        /usr/lib/golang/src/text/template/exec.go:463 (0x71ba1c)
                (*state).evalCommand: return s.evalPipeline(dot, n)
        /usr/lib/golang/src/text/template/exec.go:429 (0x71ac85)
                (*state).evalPipeline: value = s.evalCommand(dot, cmd, value) // previous value is this one's final arg.
        /usr/lib/golang/src/text/template/exec.go:254 (0x7195da)
                (*state).walk: val := s.evalPipeline(dot, node.Pipe)
        /usr/lib/golang/src/text/template/exec.go:262 (0x719281)
                (*state).walk: s.walk(dot, node)
        /usr/lib/golang/src/text/template/exec.go:292 (0x719879)
                (*state).walkIfOrWith: s.walk(dot, list)
        /usr/lib/golang/src/text/template/exec.go:259 (0x719466)
                (*state).walk: s.walkIfOrWith(parse.NodeIf, dot, node.Pipe, node.List, node.ElseList)
        /usr/lib/golang/src/text/template/exec.go:262 (0x719281)
                (*state).walk: s.walk(dot, node)
        /usr/lib/golang/src/text/template/exec.go:295 (0x7198d1)
                (*state).walkIfOrWith: s.walk(dot, elseList)
        /usr/lib/golang/src/text/template/exec.go:259 (0x719466)
                (*state).walk: s.walkIfOrWith(parse.NodeIf, dot, node.Pipe, node.List, node.ElseList)
        /usr/lib/golang/src/text/template/exec.go:262 (0x719281)
                (*state).walk: s.walk(dot, node)
        /usr/lib/golang/src/text/template/exec.go:349 (0x72a395)
                (*state).walkRange.func1: s.walk(elem, r.List)
        /usr/lib/golang/src/text/template/exec.go:358 (0x71a3d8)
                (*state).walkRange: oneIteration(reflect.ValueOf(i), val.Index(i))
        /usr/lib/golang/src/text/template/exec.go:265 (0x71957c)
                (*state).walk: s.walkRange(dot, node)
        /usr/lib/golang/src/text/template/exec.go:262 (0x719281)
                (*state).walk: s.walk(dot, node)
        /usr/lib/golang/src/text/template/exec.go:295 (0x7198d1)
                (*state).walkIfOrWith: s.walk(dot, elseList)
        /usr/lib/golang/src/text/template/exec.go:259 (0x719466)
                (*state).walk: s.walkIfOrWith(parse.NodeIf, dot, node.Pipe, node.List, node.ElseList)
        /usr/lib/golang/src/text/template/exec.go:262 (0x719281)
                (*state).walk: s.walk(dot, node)
        /usr/lib/golang/src/text/template/exec.go:411 (0x71a9ad)
                (*state).walkTemplate: newState.walk(dot, tmpl.Root)
        /usr/lib/golang/src/text/template/exec.go:267 (0x719344)
                (*state).walk: s.walkTemplate(dot, node)
        /usr/lib/golang/src/text/template/exec.go:262 (0x719281)
                (*state).walk: s.walk(dot, node)
        /usr/lib/golang/src/text/template/exec.go:217 (0x718c54)
                (*Template).execute: state.walk(value, t.Root)
        /usr/lib/golang/src/text/template/exec.go:200 (0x718a12)
                (*Template).Execute: return t.execute(wr, data)
        /usr/lib/golang/src/html/template/template.go:137 (0x738145)
                (*Template).ExecuteTemplate: return tmpl.text.Execute(wr, data)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/render.go:520 (0x7a26c3)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/render.go:555 (0x7a2b2e)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/render.go:566 (0x7a2e65)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/render.go:586 (0x7a319a)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:157 (0x79b048)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:167 (0x79b101)
        /root/go/src/code.gitea.io/gitea/modules/context/context.go:139 (0x1117d07)
        /root/go/src/code.gitea.io/gitea/routers/repo/commit.go:254 (0x127b318)
        /usr/lib/golang/src/runtime/asm_amd64.s:522 (0x45c7da)
                call32: CALLFN(·call32, 32)
        /usr/lib/golang/src/reflect/value.go:447 (0x4bbf43)
                Value.call: call(frametype, fn, args, uint32(frametype.size), uint32(retOffset))
        /usr/lib/golang/src/reflect/value.go:308 (0x4bb9d3)
                Value.Call: return v.call("Call", in)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:177 (0x76cf63)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:137 (0x76c8c9)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:121 (0x79ab50)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:112 (0x79aa6e)
        /root/go/src/code.gitea.io/gitea/modules/context/panic.go:38 (0x1120253)
        /usr/lib/golang/src/runtime/asm_amd64.s:522 (0x45c7da)
                call32: CALLFN(·call32, 32)
        /usr/lib/golang/src/reflect/value.go:447 (0x4bbf43)
                Value.call: call(frametype, fn, args, uint32(frametype.size), uint32(retOffset))
        /usr/lib/golang/src/reflect/value.go:308 (0x4bb9d3)
                Value.Call: return v.call("Call", in)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:177 (0x76cf63)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:137 (0x76c8c9)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:121 (0x79ab50)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:112 (0x79aa6e)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/session/session.go:192 (0x9a379e)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:79 (0x79a9f0)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:157 (0x76cc50)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:135 (0x76c9bb)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:121 (0x79ab50)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:112 (0x79aa6e)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/recovery.go:161 (0x7ab98a)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/logger.go:40 (0x79dd13)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:157 (0x76cc50)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/go-macaron/inject/inject.go:135 (0x76c9bb)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/context.go:121 (0x79ab50)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/router.go:187 (0x7acb97)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/router.go:303 (0x7a641e)
        /root/go/src/code.gitea.io/gitea/vendor/gopkg.in/macaron.v1/macaron.go:220 (0x79f051)
        /root/go/src/code.gitea.io/gitea/vendor/github.com/gorilla/context/context.go:141 (0xc9770a)
        /usr/lib/golang/src/net/http/server.go:1964 (0x6d4673)
                HandlerFunc.ServeHTTP: f(w, r)
        /usr/lib/golang/src/net/http/server.go:2741 (0x6d737a)
                serverHandler.ServeHTTP: handler.ServeHTTP(rw, req)
        /usr/lib/golang/src/net/http/server.go:1847 (0x6d36d5)
                (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req)
        /usr/lib/golang/src/runtime/asm_amd64.s:1333 (0x45e4f0)
                goexit: BYTE    $0x90   // NOP
guillep2k commented 4 years ago

There has been so many improvements in Gitea since 1.9.0. I'd suggest you try upgrading to 1.11.1 first and check if your problem is fixed.

lafriks commented 4 years ago

Closing as outdated version, please reopen if problem can be reproduced on 1.11.3

petrkr commented 4 years ago

Your builds does not work on 2.6.x kernel (centos) have to recompile ourself. Update of system is not possible because of big amount of repositories and huge access.

Anyway thanks for expectable reply, I told that to my boss...