mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-10 16:44:50 -05:00
PR Error 500 on CreateCsvDiff when trying to merge some branches: invalid memory address #8877
Closed
opened 2025-11-02 08:21:51 -06:00 by GiteaMirror
·
7 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
type/bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#8877
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @99rgosse on GitHub (Apr 27, 2022).
Description
Hello
We have a huge repo (800 branches, 6Gb lfs files, 12k commits, with branch protection) that we have migrated from Gitlab 2 weeks ago, on a Self hosted Gitea 1.16.5 with Pgsql
Since 2 days, some users encounters a 500 error when trying to create a pull request, there are some branches that generates this error
I tested this on the 1.16.5 & 1.16.6 instances I have. We have not many other repo to test otherwise
If we recreate the same branch with another name, the PR works as intended.
short version log :
2022/04/27 14:44:11 ...rs/web/repo/issue.go:751:setTemplateIfExists() [D] could not extract metadata fdev .gitea/pull_request_template.md [mainrepo/dev]: frontmatter must start with a separator line2022/04/27 14:44:11 ...s/context/context.go:204:HTML() [D] Template: repo/diff/compare2022/04/27 14:44:12 ...s/context/context.go:214:HTML() [E] Render failed: template: repo/diff/csv_diff:3:15: executing "repo/diff/csv_diff" at <call .root.CreateCsvDiff .file .root.BaseCommit .root.HeadCommit>: error calling call: runtime error: invalid memory address or nil pointer dereference2022/04/27 14:44:12 ...s/context/context.go:204:HTML() [D] Template: status/5002022/04/27 14:44:12 Completed GET /mainrepo/dev/compare/release/master...release/calibration 500 Internal Server Error in 1.331171119sGitea Version
1.16.5 / 1.16.6 / latest dev on master
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
https://try.gitea.io/99rgosse/issues/issues/1
Screenshots
Git Version
2.30.3
Operating System
Docker Gitea with Ubuntu
How are you running Gitea?
Docker official Gitea v.16.6
Caching enabled :
I tried :
Database
PostgreSQL
@wxiaoguang commented on GitHub (Apr 27, 2022):
It's likely caused by a bug in
CreateCsvDiff, do you have some CSV files to reproduce the bug?If we recreate the same branch with another name, the PR works as intended., that's also weird ....@wxiaoguang commented on GitHub (Apr 27, 2022):
Is it possible that you could add a
recoverat the beginning ofCreateCsvDiffto see the panic stack?@99rgosse commented on GitHub (Apr 27, 2022):
Yes, I will build from source and try this, and try to have more debug
@lunny commented on GitHub (Apr 27, 2022):
I have tested a small csv in the pull request and it works. Maybe the csv file has a special format.
@99rgosse commented on GitHub (Apr 28, 2022):
The CSV File format is not in cause
Okay, so here is the full history:
Consider branch Official and branches Secondary seemingly being two different products merged from time to time.
But the file is deleted since the migration day. Precisely this is the latest commit made before I migrated
So the Error comes up as it cannot make a diff on files not existing anymore...
EDIT : adding back the file in a new commit avoid the Error 500
@99rgosse commented on GitHub (Apr 28, 2022):
Quick and dirty fix here8eb1cd9264/routers/web/repo/compare.go (L114)if diffFile == nil || baseCommit == nil || headCommit == nil || diffFile.IsDeleted == true {I will do some tests, because it may fail if we try to compare a CSV then deleted...
It fails indeed...
The full error is "object does not exist" but somehow it is not displayed =>
8eb1cd9264/routers/web/repo/compare.go (L132)@wxiaoguang commented on GitHub (Apr 29, 2022):
Yep, the logic is incomplete.It doesn't check theerrreturned bycsvReaderFromCommitcorrectly, then thenilreaders are used below.https://github.com/go-gitea/gitea/blob/8eb1cd9264af9493e0f57a4a4c0a1f764f7cefcf/routers/web/repo/compare.go#L139-L154Update (2022-09-16): the comment above seems incorrect, as discussed in #21184, the CreateCsvDiff is intended to handle nil head or base commit. So, the 500 error is likely to be caused by other reasons.
Update (2023-02-17): according to #22946, the first guess seems reasonable, the CreateCsvDiff logic was incomplete, it should be able to process the situation when base and head are both nil.