Debian 9.6 AMD64: Segfault on start at os/user.Current (1.7.0+) #3287

Closed
opened 2025-11-02 05:06:40 -06:00 by GiteaMirror · 19 comments
Owner

Originally created by @hendrikbl on GitHub (May 3, 2019).

  • Gitea version (or commit ref): 1.6.4
  • Git version: 2.11.0
  • Operating system: Debian 9.6
  • Database (use [x]):
    • PostgreSQL
    • MySQL (MariaDB)
    • MSSQL
    • SQLite
  • Can you reproduce the bug at https://try.gitea.io:
    • Yes (provide example URL)
    • No
    • Not relevant
  • Log gist:

Description

After upgrading from gitea version 1.6.4 to 1.7.0 (replacing gitea binary with new one) I'm unable to start gitea. The gitea service fails with the following message (service gitea status):

● gitea.service - Gitea (Git with a cup of tea)
   Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Fri 2019-05-03 12:27:24 CEST; 1s ago
  Process: 31656 ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini (code=exited, status=2)
 Main PID: 31656 (code=exited, status=2)

If I try to run it directly via gitea web I get the following:
Gist

More logs:

Mai 03 12:18:43 gitea systemd[1]: Started Gitea (Git with a cup of tea).
Mai 03 12:18:43 gitea gitea[29491]: fatal error: unexpected signal during runtime execution
Mai 03 12:18:43 gitea gitea[29491]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x0]
Mai 03 12:18:43 gitea gitea[29491]: runtime stack:
Mai 03 12:18:43 gitea gitea[29491]: runtime.throw(0x19c3d99, 0x2a)
Mai 03 12:18:43 gitea systemd[1]: gitea.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Mai 03 12:18:43 gitea systemd[1]: gitea.service: Unit entered failed state.
Mai 03 12:18:43 gitea systemd[1]: gitea.service: Failed with result 'exit-code'.

I get this error with every version greater than 1.6.4. All permissions were set the same with every version I tried. I haven't tried building gitea myself since this is something I only want to do if there really is no other way.

Originally created by @hendrikbl on GitHub (May 3, 2019). <!-- NOTE: If your issue is a security concern, please send an email to security@gitea.io instead of opening a public issue --> <!-- 1. Please speak English, this is the language all maintainers can speak and write. 2. Please ask questions or configuration/deploy problems on our Discord server (https://discord.gg/gitea) or forum (https://discourse.gitea.io). 3. Please take a moment to check that your issue doesn't already exist. 4. Please give all relevant information below for bug reports, because incomplete details will be handled as an invalid report. --> - Gitea version (or commit ref): 1.6.4 - Git version: 2.11.0 - Operating system: Debian 9.6 - Database (use `[x]`): - [ ] PostgreSQL - [x] MySQL (MariaDB) - [ ] MSSQL - [ ] SQLite - Can you reproduce the bug at https://try.gitea.io: - [ ] Yes (provide example URL) - [ ] No - [x] Not relevant - Log gist: ## Description After upgrading from gitea version 1.6.4 to 1.7.0 (replacing gitea binary with new one) I'm unable to start gitea. The gitea service fails with the following message (`service gitea status`): ``` ● gitea.service - Gitea (Git with a cup of tea) Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Fri 2019-05-03 12:27:24 CEST; 1s ago Process: 31656 ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini (code=exited, status=2) Main PID: 31656 (code=exited, status=2) ``` If I try to run it directly via `gitea web` I get the following: [Gist](https://gist.github.com/hendrikbl/07b0ad66f30167ab34ceecb4c3b89695 ) More logs: ``` Mai 03 12:18:43 gitea systemd[1]: Started Gitea (Git with a cup of tea). Mai 03 12:18:43 gitea gitea[29491]: fatal error: unexpected signal during runtime execution Mai 03 12:18:43 gitea gitea[29491]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x0] Mai 03 12:18:43 gitea gitea[29491]: runtime stack: Mai 03 12:18:43 gitea gitea[29491]: runtime.throw(0x19c3d99, 0x2a) Mai 03 12:18:43 gitea systemd[1]: gitea.service: Main process exited, code=exited, status=2/INVALIDARGUMENT Mai 03 12:18:43 gitea systemd[1]: gitea.service: Unit entered failed state. Mai 03 12:18:43 gitea systemd[1]: gitea.service: Failed with result 'exit-code'. ``` I get this error with every version greater than 1.6.4. All permissions were set the same with every version I tried. I haven't tried building gitea myself since this is something I only want to do if there really is no other way. <!-- **If this issue involves the Web Interface, please include a screenshot** -->
GiteaMirror added the topic/build label 2025-11-02 05:06:40 -06:00
Author
Owner

@zeripath commented on GitHub (May 3, 2019):

Are you running Gitea on a raspberry pi? If so there is a known problem with the arm7 binary and you need to use arm6.

If not what kernel version do you have? If it's very old you're likely to need to build Gitea yourself as we build on Ubuntu 18.04.

Finally, please don't run 1.7.0 there are a number of security issues in that version and we recommend 1.8 if not at least 1.7.6 (there are fixes in 1.8 that cannot be ported back to 1.7.6)

@zeripath commented on GitHub (May 3, 2019): Are you running Gitea on a raspberry pi? If so there is a known problem with the arm7 binary and you need to use arm6. If not what kernel version do you have? If it's very old you're likely to need to build Gitea yourself as we build on Ubuntu 18.04. Finally, please don't run 1.7.0 there are a number of security issues in that version and we recommend 1.8 if not at least 1.7.6 (there are fixes in 1.8 that cannot be ported back to 1.7.6)
Author
Owner

@hendrikbl commented on GitHub (May 6, 2019):

I'm on a virtual machine running Debian 9.6 x86_64 with kernel version 4.9.0-4-amd64.

I tried version 1.7.0, 1.7.6 and 1.8. They all give me the same error.

@hendrikbl commented on GitHub (May 6, 2019): I'm on a virtual machine running Debian 9.6 x86_64 with kernel version 4.9.0-4-amd64. I tried version 1.7.0, 1.7.6 and 1.8. They all give me the same error.
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

Ok.

Under what user are you trying to run Gitea?
And where? Things don't make sense.

The segfault looks like it's happening when Gitea tries to get the current username. That implies that you're running Gitea as a weird user.

Although you state:

/usr/local/bin/gitea web -c /etc/gitea/app.ini

Gitea seems to be trying get its config:

/usr/local/bin/custom/conf/app.ini

Not in /etc...

What does your service file look like?

Does Gitea run when you just run it as a normal user from a normal directory?

@zeripath commented on GitHub (May 6, 2019): Ok. Under what user are you trying to run Gitea? And where? Things don't make sense. The segfault looks like it's happening when Gitea tries to get the current username. That implies that you're running Gitea as a weird user. Although you state: `/usr/local/bin/gitea web -c /etc/gitea/app.ini` Gitea seems to be trying get its config: `/usr/local/bin/custom/conf/app.ini` Not in `/etc`... What does your service file look like? Does Gitea run when you just run it as a normal user from a normal directory?
Author
Owner

@hendrikbl commented on GitHub (May 6, 2019):

I followed the documentation when first installing gitea. So gitea service is running as git user:

root@gitea:~# cat /etc/passwd | grep git
git:x:109:116:Git Version Control,,,:/home/git:/bin/bash

The binary is located at /usr/local/bin. The working directory is /var/lib/gitea/. As seen in the documentation.

Here's my service file: gitea.service

I tried running gitea as root and git from the corresponding home directory but i still get a segfault.

Although you state:

/usr/local/bin/gitea web -c /etc/gitea/app.ini

Gitea seems to be trying get its config:

/usr/local/bin/custom/conf/app.ini

Not in /etc...

Thats my fault. The log I gave you was from running gitea without the -c argument. Here are the three things I tried:

  • User: git, Directory: /usr/local/bin - Gist
  • User: git, Directory: /home/git - Gist
  • User: root, Directory: home/root - Gist

Does Gitea run when you just run it as a normal user from a normal directory?

So the answer to this question is: No, I can't run gitea anywhere. The strange thing is that version 1.6.4 runs everytime on every circumstance. Everything thats newer than that fails.

Edit: Everything here was tested with version 1.8 of gitea.

@hendrikbl commented on GitHub (May 6, 2019): I followed the [documentation](https://docs.gitea.io/en-us/install-from-binary/) when first installing gitea. So gitea service is running as git user: ``` root@gitea:~# cat /etc/passwd | grep git git:x:109:116:Git Version Control,,,:/home/git:/bin/bash ``` The binary is located at `/usr/local/bin`. The working directory is `/var/lib/gitea/`. As seen in the documentation. Here's my service file: [gitea.service](https://gist.github.com/hendrikbl/87e53d46d63aa4a2a010b3870753bf69) I tried running gitea as root and git from the corresponding home directory but i still get a segfault. > Although you state: > >/usr/local/bin/gitea web -c /etc/gitea/app.ini > >Gitea seems to be trying get its config: > >/usr/local/bin/custom/conf/app.ini > >Not in /etc... Thats my fault. The log I gave you was from running gitea without the `-c` argument. Here are the three things I tried: - User: `git`, Directory: `/usr/local/bin` - [Gist](https://gist.github.com/hendrikbl/25140c70a5edec58be8cdb6cbd799daa) - User: `git`, Directory: `/home/git` - [Gist](https://gist.github.com/hendrikbl/9903b5559198fc02f9098789b904f1d2) - User: `root`, Directory: `home/root` - [Gist](https://gist.github.com/hendrikbl/087ac63b54b7913d47b4df24aecc9518) >Does Gitea run when you just run it as a normal user from a normal directory? So the answer to this question is: No, I can't run gitea anywhere. The strange thing is that version 1.6.4 runs everytime on every circumstance. Everything thats newer than that fails. Edit: Everything here was tested with version 1.8 of gitea.
Author
Owner

@sapk commented on GitHub (May 6, 2019):

This thread on discourse seem related: https://discourse.gitea.io/t/solved-segfault-due-to-misconfigured-unix-user/1104

@sapk commented on GitHub (May 6, 2019): This thread on discourse seem related: https://discourse.gitea.io/t/solved-segfault-due-to-misconfigured-unix-user/1104
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

Hmm. It looks like this is:

https://github.com/golang/go/issues/24787

Which if I'm reading correctly causes panic on os/user.Current or Lookup for uid <1000.

Now it seems like it's suggested that we need to add more flags to our static build:

https://github.com/golang/go/issues/24787#issuecomment-387611691

But I bet a simple workaround is to have a uid>=1000. Now you may actually need that in any case because of the SSH requirements - in that if you want to clone over SSH you need to be able to login as that user and run authorized_keys or an authorized keys command which I'm not certain you can do as a uid <1000.

@zeripath commented on GitHub (May 6, 2019): Hmm. It looks like this is: https://github.com/golang/go/issues/24787 Which if I'm reading correctly causes panic on os/user.Current or Lookup for uid <1000. Now it seems like it's suggested that we need to add more flags to our static build: https://github.com/golang/go/issues/24787#issuecomment-387611691 But I bet a simple workaround is to have a uid>=1000. Now you may actually need that in any case because of the SSH requirements - in that if you want to clone over SSH you need to be able to login as that user and run authorized_keys or an authorized keys command which I'm not certain you can do as a uid <1000.
Author
Owner

@sapk commented on GitHub (May 6, 2019):

@zeripath It is a pity that we need an other tag (osusergo) like netgo but if it ensure consistency across env we should add it.

@sapk commented on GitHub (May 6, 2019): @zeripath It is a pity that we need an other tag (`osusergo`) like `netgo` but if it ensure consistency across env we should add it.
Author
Owner

@hendrikbl commented on GitHub (May 6, 2019):

I tried running gitea with a new user with a uid>1000:

root@gitea:/usr/local/bin# grep gitea /etc/shadow
gitea:!:18022:0:99999:7:::
root@gitea:/usr/local/bin# grep gitea /etc/passwd
gitea:x:1003:1002:Gitea,,,:/home/gitea:/bin/bash

Still no luck. I get exactly the same. Current version 1.6.4 runs perfectly, everything above that fails.

Can I use the gitea dump command on my current version, create a fresh install of version 1.8 somewhere else and restore the dump? If that's the case I will try that.

@hendrikbl commented on GitHub (May 6, 2019): I tried running gitea with a new user with a uid>1000: ``` bash root@gitea:/usr/local/bin# grep gitea /etc/shadow gitea:!:18022:0:99999:7::: root@gitea:/usr/local/bin# grep gitea /etc/passwd gitea:x:1003:1002:Gitea,,,:/home/gitea:/bin/bash ``` Still no luck. I get exactly the same. Current version 1.6.4 runs perfectly, everything above that fails. Can I use the `gitea dump` command on my current version, create a fresh install of version 1.8 somewhere else and restore the dump? If that's the case I will try that.
Author
Owner

@lunny commented on GitHub (May 6, 2019):

@hendrikbl That's dump and restore are not guaranteed.

@lunny commented on GitHub (May 6, 2019): @hendrikbl That's dump and restore are not guaranteed.
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

@hendrikbl I assume that by a uid > 1000 you haven't marked the user as a system user?

OK, so I wonder how we test this. I've just downloaded the docker debian:latest and that doesn't replicate the issue with 1.8.0

@zeripath commented on GitHub (May 6, 2019): @hendrikbl I assume that by a uid > 1000 you haven't marked the user as a system user? OK, so I wonder how we test this. I've just downloaded the docker debian:latest and that doesn't replicate the issue with 1.8.0
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

and I've just tried docker pull debian:9.6 and haven't got this issue either and 1.8 and 1.7.6

@zeripath commented on GitHub (May 6, 2019): and I've just tried docker pull debian:9.6 and haven't got this issue either and 1.8 and 1.7.6
Author
Owner

@hendrikbl commented on GitHub (May 6, 2019):

@zeripath correct, I just used adduser and followed the setup without setting a password.

Hmm, have you done everything according to the installation guide? Because that's what I did. I'll see if I can try this on a fresh debian install this week. I'm not sure when I have time for that though.

@hendrikbl commented on GitHub (May 6, 2019): @zeripath correct, I just used `adduser` and followed the setup without setting a password. Hmm, have you done everything according to the [installation guide](https://docs.gitea.io/en-us/install-from-binary/)? Because that's what I did. I'll see if I can try this on a fresh debian install this week. I'm not sure when I have time for that though.
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

OK, I mean I can start from the command line - I think getting systemd started on a debian docker is fairly difficult.

@zeripath commented on GitHub (May 6, 2019): OK, I mean I can start from the command line - I think getting systemd started on a debian docker is fairly difficult.
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

Oh I did add a password though... Nope that doesn't seem to matter

@zeripath commented on GitHub (May 6, 2019): ~~Oh I did add a password though...~~ Nope that doesn't seem to matter
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

root@ef9a8c7df397:/home/gitsys# adduser git2
Adding user `git2' ...
Adding new group `git2' (1001) ...
Adding new user `git2' (1001) with group `git2' ...
Creating home directory `/home/git2' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
No password supplied
Enter new UNIX password: 
Retype new UNIX password: 
No password supplied
Enter new UNIX password: 
Retype new UNIX password: 
No password supplied
passwd: Authentication token manipulation error
passwd: password unchanged
Try again? [y/N] 
Changing the user information for git2
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y
root@ef9a8c7df397:/home/gitsys# sudo -u git2 /gitea-1.7.6-linux-amd64 -c /home/git2/custom/conf/app.ini
2019/05/06 13:43:10 [W] Custom config '/home/git2/custom/conf/app.ini' not found, ignore this if you're running first time
2019/05/06 13:43:10 [T] AppPath: /gitea-1.7.6-linux-amd64
2019/05/06 13:43:10 [T] AppWorkPath: 
2019/05/06 13:43:10 [T] Custom path: custom
2019/05/06 13:43:10 [T] Log path: log
2019/05/06 13:43:10 [I] Gitea v1.7.6 built with go1.12.4 : bindata, sqlite, sqlite_unlock_notify
2019/05/06 13:43:10 [I] Log Mode: Console(Info)
2019/05/06 13:43:10 [I] XORM Log Mode: Console(Info)
2019/05/06 13:43:10 [I] Cache Service Enabled
2019/05/06 13:43:10 [I] Session Service Enabled
2019/05/06 13:43:10 [I] SQLite3 Supported
2019/05/06 13:43:10 [I] Run Mode: Development
2019/05/06 13:43:10 [I] Listen: http://0.0.0.0:3000
2019/05/06 13:43:10 Serving [::]:3000 with pid 5021
^C2019/05/06 13:43:12 Exiting pid 5021.
@zeripath commented on GitHub (May 6, 2019): ``` root@ef9a8c7df397:/home/gitsys# adduser git2 Adding user `git2' ... Adding new group `git2' (1001) ... Adding new user `git2' (1001) with group `git2' ... Creating home directory `/home/git2' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: No password supplied Enter new UNIX password: Retype new UNIX password: No password supplied Enter new UNIX password: Retype new UNIX password: No password supplied passwd: Authentication token manipulation error passwd: password unchanged Try again? [y/N] Changing the user information for git2 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y root@ef9a8c7df397:/home/gitsys# sudo -u git2 /gitea-1.7.6-linux-amd64 -c /home/git2/custom/conf/app.ini 2019/05/06 13:43:10 [W] Custom config '/home/git2/custom/conf/app.ini' not found, ignore this if you're running first time 2019/05/06 13:43:10 [T] AppPath: /gitea-1.7.6-linux-amd64 2019/05/06 13:43:10 [T] AppWorkPath: 2019/05/06 13:43:10 [T] Custom path: custom 2019/05/06 13:43:10 [T] Log path: log 2019/05/06 13:43:10 [I] Gitea v1.7.6 built with go1.12.4 : bindata, sqlite, sqlite_unlock_notify 2019/05/06 13:43:10 [I] Log Mode: Console(Info) 2019/05/06 13:43:10 [I] XORM Log Mode: Console(Info) 2019/05/06 13:43:10 [I] Cache Service Enabled 2019/05/06 13:43:10 [I] Session Service Enabled 2019/05/06 13:43:10 [I] SQLite3 Supported 2019/05/06 13:43:10 [I] Run Mode: Development 2019/05/06 13:43:10 [I] Listen: http://0.0.0.0:3000 2019/05/06 13:43:10 Serving [::]:3000 with pid 5021 ^C2019/05/06 13:43:12 Exiting pid 5021. ```
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

Damn if we can't replicate this we can't be sure that osusergo will actually fix it.

@zeripath commented on GitHub (May 6, 2019): Damn if we can't replicate this we can't be sure that osusergo will actually fix it.
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

Hmm what's the result of:

dpkg -l libc6

mine is: 2.24-11+deb9u3 and on my ubuntu box it's 2.27-3ubuntu, on unstable it's 2.28 or so.

@zeripath commented on GitHub (May 6, 2019): Hmm what's the result of: ```bash dpkg -l libc6 ``` mine is: `2.24-11+deb9u3` and on my ubuntu box it's `2.27-3ubuntu`, on unstable it's 2.28 or so.
Author
Owner

@zeripath commented on GitHub (May 6, 2019):

So we're fairly certain that #6862 will fix this. We'll get it backported to the 1.8 line but that won't fix the other releases at present.

@zeripath commented on GitHub (May 6, 2019): So we're fairly certain that #6862 will fix this. We'll get it backported to the 1.8 line but that won't fix the other releases at present.
Author
Owner

@hendrikbl commented on GitHub (May 7, 2019):

@zeripath @sapk You're all a bunch of geniuses! The new 1.8 build works perfectly. Thank you for solving this in only one day :)

@hendrikbl commented on GitHub (May 7, 2019): @zeripath @sapk You're all a bunch of geniuses! The new 1.8 build works perfectly. Thank you for solving this in only one day :)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#3287