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.61k stars 5.45k forks source link

500/404 error when clicking "read" notifications #10815

Closed echodreamz closed 3 years ago

echodreamz commented 4 years ago

2020/03/24 23:23:24 ...les/context/panic.go:35:1() [E] PANIC:: runtime error: invalid memory address or nil pointer dereference /usr/local/go/src/runtime/panic.go:199 (0x44c4db) /usr/local/go/src/runtime/signal_unix.go:394 (0x44c318) /go/src/code.gitea.io/gitea/models/notification.go:391 (0xefb223) /go/src/code.gitea.io/gitea/routers/user/notification.go:81 (0x129feda) /usr/local/go/src/reflect/value.go:460 (0x497625) /usr/local/go/src/reflect/value.go:321 (0x496de3) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:177 (0x9b30d9) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:137 (0x9b2a89) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:121 (0x9e3c58) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:112 (0xff8531) /go/src/code.gitea.io/gitea/modules/context/panic.go:39 (0xff851d) /usr/local/go/src/reflect/value.go:460 (0x497625) /usr/local/go/src/reflect/value.go:321 (0x496de3) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:177 (0x9b30d9) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:137 (0x9b2a89) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:121 (0x9e3c58) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:112 (0xab2255) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/session/session.go:192 (0xab2240) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:79 (0x9e3b00) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:157 (0x9b2de9) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:135 (0x9b2b78) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:121 (0x9e3c58) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:112 (0x17feb26) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/gzip/gzip.go:139 (0x17feb19) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:79 (0x9e3b00) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:157 (0x9b2de9) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:135 (0x9b2b78) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:121 (0x9e3c58) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:112 (0x9f5239) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/recovery.go:161 (0x9f5227) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/logger.go:40 (0x9e77d3) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:157 (0x9b2de9) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:135 (0x9b2b78) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:121 (0x9e3c58) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:112 (0x9f4570) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/logger.go:52 (0x9f455b) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/logger.go:40 (0x9e77d3) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:157 (0x9b2de9) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/inject/inject.go:135 (0x9b2b78) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/context.go:121 (0x9e3c58) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/router.go:187 (0x9f6456) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/router.go:294 (0x9efedd) /go/src/code.gitea.io/gitea/vendor/gitea.com/macaron/macaron/macaron.go:218 (0x9e8b6a) /go/src/code.gitea.io/gitea/vendor/github.com/gorilla/context/context.go:141 (0xd3701d) /usr/local/go/src/net/http/server.go:2007 (0x753553) /usr/local/go/src/net/http/server.go:2802 (0x7569a3) /usr/local/go/src/net/http/server.go:1890 (0x752344) /usr/local/go/src/runtime/asm_amd64.s:1357 (0x466c70)

Description

This appears to only occur when the user has unread notifications and they select the "read" tab. They either get a 404 or 500 error page.

bagasme commented 4 years ago

@echodreamz 404 or 500 error returned by random?

echodreamz commented 4 years ago

@bagasme when clicking the "read" tab, sometimes it's a 404 page, sometimes it is a 500 error page shown. Seems to be random which element is returned. It also only appears to do this for some users, but not others.

zeripath commented 4 years ago

The problem is line 392 here:

https://github.com/go-gitea/gitea/blob/3dabfd493372e693b6905d08ec2fb22abaed8ae7/models/notification.go#L389-L395

If notification.Issue remains nil then you will get a panic.

zeripath commented 4 years ago

Now why is it that NotificationList.LoadIssues() couldn't load an issue?

I bet there are notifications being made before the session commits.

6543 commented 4 years ago

current status?

zeripath commented 4 years ago

The 500 can no longer occur - the associated pr prevents it but I wasn't able to work out why the problem could occur in the first place.

We would need the original reporter to happen upon another case - hopefully in a repeatable manner so we can work out what caused the problem.

zeripath commented 4 years ago

This bug should not hold up any milestone though. The 500 has been presented so I'll gonna move it to 1.14

lunny commented 3 years ago

I'll close this since it cannot reproduce any more. Please feel free to reopen it.