[Bug]: A failed command exits with 0 when core_exit.sh is downloaded on exit
Maintainers usually reply within 1 day
A pull request for this has already been merged.
- #5192 by @borzaka — merged
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 35/100
Research direction
Read core_modules.sh and core_dl.sh, focusing on core_exit.sh(), fn_fetch_module, and fn_fetch_file around the local exitcode declaration. Reproduce with a fresh instance and the reported start command inside tmux, then compare its exit code before and after core_exit.sh is present. Done means the first failing run returns its original nonzero code; linked pull request #5192 is merged.
Written by the indexing model from the issue text.
Description
Severity
severity: low
Reproducibility
reproducible: always
Regression
regression: no
Affects latest release
latest-release: yes
User story
As a server admin who runs LinuxGSM from scripts or cron, I want a failed command to return a non-zero exit code on a new instance too, so that the failure is not reported as success.
Script name
ts3server (any server is affected)
Game
Teamspeak 3
Linux distro
Debian 13
Command
command: start
Expected behavior
The command exits with the code it set, as it does on later runs (1 for the tmuxception error below).
Actual behavior
If lgsm/modules/core_exit.sh has not been downloaded yet, it is downloaded on exit and the command exits with 0. The same command exits with 1 once the file exists.
Further information
core_exit.sh() in core_modules.sh loads the module with fn_fetch_module, and fn_fetch_file (core_dl.sh) sources it inside its own function. When the file is missing, fn_fetch_file first declares local exitcode="" (line 505), which the curl result and fn_script_log_pass "Downloading ..." set to 0, so core_exit.sh exits with that local instead of the caller's code. Once the file exists the download branch is skipped, so only the exit that downloads core_exit.sh is affected, usually the first failing command on a new instance. The pattern is already in v21.3.2; #4159 only changed local exitcode=$? to local exitcode="". A fix is to download core_exit.sh without running it, keep exitcode, and then load it as before. Related but different exit code fixes: #5060, #5109, #5113.
Pre-checks
- I ran update and validate before reporting this issue.
Not run: found by code review and reproduced on a new develop instance, which has nothing to update or validate yet.
Relevant log output
# New ts3server instance from develop (11103431), Debian 13 (WSL2), run inside a tmux session.
$ ./ts3server start; echo $?
[ FAIL ] Starting ts3server: tmuxception error: Sorry Cobb you cannot start a tmux session inside of a tmux session.
...
fetching GitHub [ core_exit.sh ] ... OK
0
$ ./ts3server start; echo $?
[ FAIL ] Starting ts3server: tmuxception error: Sorry Cobb you cannot start a tmux session inside of a tmux session.
...
1
Steps to reproduce
- Create a new instance:
curl -Lo linuxgsm.sh https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/develop/linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh ts3server. - Inside a tmux session, run
LGSM_GITHUBBRANCH=develop ./ts3server start; echo $?. It fails with the tmuxception error, fetchescore_exit.shlast and prints 0. - Run the same command again. It prints 1.
🤖 Generated with Claude Code
- Dominant language
- Shell
- Stars
- 4.9k
- Forks
- 870
- Avg merge
- 18h 44m
- Merged PRs (30d)
- 148
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from GameServerManagers/LinuxGSM
-
command: start distro: Debian engine: null game: Teamspeak 3 reproducible: always severity: low type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
GameServerManagers/LinuxGSM#5193 ·
Maintainers usually reply within 1 day
-
command: start engine: unreal4 game: The Front reproducible: always severity: medium type: bug
Difficulty 1/5 Under an hour Newbie friendliness 86/100
GameServerManagers/LinuxGSM#5185 ·
Maintainers usually reply within 1 day
-
bug(ins): server fails to start, srcds_run has CRLF line endings and needs bashPossibly taken A pull request linked to this issue is open or already merged. Opendistro: Ubuntu engine: source game: Insurgency status: fixed in develop
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
GameServerManagers/LinuxGSM#5153 ·
Maintainers usually reply within 1 day
-
[Bug]: cs2server ignores the GSLT entered during installPossibly taken A pull request linked to this issue is open or already merged. Opencommand: install command: start distro: Debian engine: source2 game: Counter-Strike 2 regression: yes reproducible: always severity: high type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
GameServerManagers/LinuxGSM#5106 ·
Maintainers usually reply within 1 day
-
[Bug]: install passes a leftover forcedl value instead of each server's force settingPossibly taken A pull request linked to this issue is open or already merged. Opencommand: install info: steamcmd reproducible: unable severity: low status: fixed in develop type: bug
Difficulty 1/5 Under an hour Newbie friendliness 25/100
GameServerManagers/LinuxGSM#5189 ·
Maintainers usually reply within 1 day
All issues in GameServerManagers/LinuxGSM
Similar issues
-
Isha NarulaOpen
Difficulty 1/5 Under an hour Newbie friendliness 72/100
dataplat/DataSpeakers#178 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
btclib-org/claude-process#341 ·
-
install: a relative or space-containing --tools-home writes a hook that cannot run, with no warningOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
[BUG] mo clean deletes Cypress test runner binaries in ~/Library/Caches/CypressPossibly taken @viniciusdsandrade claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100