[GH-ISSUE #4607] [Bug]: Ignored Null Byte in Input (sdtdserver) #2860

Open
opened 2026-02-27 03:05:52 +03:00 by kerem · 2 comments
Owner

Originally created by @warderkeeju on GitHub (Jul 4, 2024).
Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/4607

User story

Looking for a fix for the telnet error when issues stop/restart commands to sdtdserver

Game

7 Days to Die ver. 1.0 B313

Linux distro

Ubuntu 22.04

Command

command: restart

Further information

When issuing a restart or stop command and LinuxGSM attempts to stop an 7D2D server gracefully -- there is an error posted to console as follows:
image

Relevant log output

2024-07-04T10:46:57 60332.810 INF Telnet connection closed: 127.0.0.1:53664
2024-07-04T10:46:57 60332.810 INF Exited thread TelnetClient_127.0.0.1:53664
2024-07-04T10:46:57 60332.910 INF Executing command 'shutdown' by Telnet from 127.0.0.1:34982
2024-07-04T10:47:08 60343.483 INF Telnet connection from: 127.0.0.1:60676
2024-07-04T10:47:08 60343.483 INF Started thread TelnetClient_127.0.0.1:60676
2024-07-04T10:47:08 60343.494 ERR IOException in TelnetClient_127.0.0.1:34982: Unable to write data to the transport connection: The socket has been shut down.
2024-07-04T10:47:08 60343.495 EXC Unable to write data to the transport connection: The socket has been shut down. ---> The socket has been shut down
  at System.Net.Sockets.Socket.Send (System.Byte[] buffer, System.Int32 offset, System.Int32 size, System.Net.Sockets.SocketFlags socketFlags) [0x00016] in <bcb2428cc11d4f819c07c640b17b2d4b>:0
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, System.Int32 offset, System.Int32 size) [0x00065] in <bcb2428cc11d4f819c07c640b17b2d4b>:0
Rethrow as IOException: Unable to write data to the transport connection: The socket has been shut down.
  at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, System.Int32 offset, System.Int32 size) [0x000ac] in <bcb2428cc11d4f819c07c640b17b2d4b>:0
  at TelnetConnection.handleWriting () [0x0004b] in <e964412161274dc68df2fb9c0c8aaaa3>:0
  at TelnetConnection.HandlerThread (ThreadManager+ThreadInfo _tInfo) [0x00022] in <e964412161274dc68df2fb9c0c8aaaa3>:0
UnityEngine.StackTraceUtility:ExtractStringFromException(Object)
Log:Exception(Exception)
TelnetConnection:HandlerThread(ThreadInfo)
ThreadManager:myThreadInvoke(Object)
System.Threading.QueueUserWorkItemCallback:System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
System.Threading.ThreadPoolWorkQueue:Dispatch()
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

Steps to reproduce

Run './sdtdserver restart' or './sdtdserver stop' and get multiple repeating errors shown in log entries and initial description.

Originally created by @warderkeeju on GitHub (Jul 4, 2024). Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/4607 ### User story Looking for a fix for the telnet error when issues stop/restart commands to sdtdserver ### Game 7 Days to Die ver. 1.0 B313 ### Linux distro Ubuntu 22.04 ### Command command: restart ### Further information When issuing a restart or stop command and LinuxGSM attempts to stop an 7D2D server gracefully -- there is an error posted to console as follows: ![image](https://github.com/GameServerManagers/LinuxGSM/assets/145716068/dfd36ed3-d7c3-44f0-9596-b38b65d03904) ### Relevant log output ```shell 2024-07-04T10:46:57 60332.810 INF Telnet connection closed: 127.0.0.1:53664 2024-07-04T10:46:57 60332.810 INF Exited thread TelnetClient_127.0.0.1:53664 2024-07-04T10:46:57 60332.910 INF Executing command 'shutdown' by Telnet from 127.0.0.1:34982 2024-07-04T10:47:08 60343.483 INF Telnet connection from: 127.0.0.1:60676 2024-07-04T10:47:08 60343.483 INF Started thread TelnetClient_127.0.0.1:60676 2024-07-04T10:47:08 60343.494 ERR IOException in TelnetClient_127.0.0.1:34982: Unable to write data to the transport connection: The socket has been shut down. 2024-07-04T10:47:08 60343.495 EXC Unable to write data to the transport connection: The socket has been shut down. ---> The socket has been shut down at System.Net.Sockets.Socket.Send (System.Byte[] buffer, System.Int32 offset, System.Int32 size, System.Net.Sockets.SocketFlags socketFlags) [0x00016] in <bcb2428cc11d4f819c07c640b17b2d4b>:0 at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, System.Int32 offset, System.Int32 size) [0x00065] in <bcb2428cc11d4f819c07c640b17b2d4b>:0 Rethrow as IOException: Unable to write data to the transport connection: The socket has been shut down. at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, System.Int32 offset, System.Int32 size) [0x000ac] in <bcb2428cc11d4f819c07c640b17b2d4b>:0 at TelnetConnection.handleWriting () [0x0004b] in <e964412161274dc68df2fb9c0c8aaaa3>:0 at TelnetConnection.HandlerThread (ThreadManager+ThreadInfo _tInfo) [0x00022] in <e964412161274dc68df2fb9c0c8aaaa3>:0 UnityEngine.StackTraceUtility:ExtractStringFromException(Object) Log:Exception(Exception) TelnetConnection:HandlerThread(ThreadInfo) ThreadManager:myThreadInvoke(Object) System.Threading.QueueUserWorkItemCallback:System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() System.Threading.ThreadPoolWorkQueue:Dispatch() System.Threading._ThreadPoolWaitCallback:PerformWaitCallback() ``` ### Steps to reproduce Run './sdtdserver restart' or './sdtdserver stop' and get multiple repeating errors shown in log entries and initial description.
Author
Owner

@irobot73 commented on GitHub (Jul 30, 2024):

Getting the same error via CONSOLE:

linuxgsm@19d5c9c9dadc:/app$ ./*server restart
[ .... ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084/app/lgsm/modules/command_stop.sh: line 130: warning: command substitution: ignored null byte in input
[  OK  ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084 : OK
[  OK  ] Stopping sdtdserver: Double-D's 7D2D Server
[  OK  ] Starting sdtdserver: Double-D's 7D2D Server
linuxgsm@19d5c9c9dadc:/app$ 

Script log:

Jul 30 10:28:32.949 sdtdserver: STOP: PASS: Using cached IP as public IP address
Jul 30 10:28:33.622 sdtdserver: STOP: PASS: Using cached IP as public IP address
Jul 30 10:28:34.223 sdtdserver: STOP: INFO: Graceful: telnet
Jul 30 10:28:34.730 sdtdserver: STOP: INFO: Graceful: telnet: 127.0.0.1:8084
Jul 30 10:28:37.280 sdtdserver: STOP: PASS: Graceful: telnet: 127.0.0.1:8084 : 1 seconds
Jul 30 10:28:37.797 sdtdserver: STOP: INFO: tmux kill-session: sdtdserver: Double-D's 7D2D Server
Jul 30 10:28:38.920 sdtdserver: STOP: PASS: Stopped Double-D's 7D2D Server
Jul 30 10:28:40.551 sdtdserver: START: PASS: Checking ubuntu-22.04.csv
Jul 30 10:28:40.955 sdtdserver: START: PASS: Using cached IP as public IP address
Jul 30 10:28:41.034 sdtdserver: START: INFO: Using anonymous Steam login
Jul 30 10:28:41.417 sdtdserver: START: PASS: Using cached IP as public IP address
Jul 30 10:28:42.007 sdtdserver: START: INFO: Rotating log files
<!-- gh-comment-id:2258506267 --> @irobot73 commented on GitHub (Jul 30, 2024): Getting the same error via CONSOLE: ``` linuxgsm@19d5c9c9dadc:/app$ ./*server restart [ .... ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084/app/lgsm/modules/command_stop.sh: line 130: warning: command substitution: ignored null byte in input [ OK ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084 : OK [ OK ] Stopping sdtdserver: Double-D's 7D2D Server [ OK ] Starting sdtdserver: Double-D's 7D2D Server linuxgsm@19d5c9c9dadc:/app$ ``` Script log: ``` Jul 30 10:28:32.949 sdtdserver: STOP: PASS: Using cached IP as public IP address Jul 30 10:28:33.622 sdtdserver: STOP: PASS: Using cached IP as public IP address Jul 30 10:28:34.223 sdtdserver: STOP: INFO: Graceful: telnet Jul 30 10:28:34.730 sdtdserver: STOP: INFO: Graceful: telnet: 127.0.0.1:8084 Jul 30 10:28:37.280 sdtdserver: STOP: PASS: Graceful: telnet: 127.0.0.1:8084 : 1 seconds Jul 30 10:28:37.797 sdtdserver: STOP: INFO: tmux kill-session: sdtdserver: Double-D's 7D2D Server Jul 30 10:28:38.920 sdtdserver: STOP: PASS: Stopped Double-D's 7D2D Server Jul 30 10:28:40.551 sdtdserver: START: PASS: Checking ubuntu-22.04.csv Jul 30 10:28:40.955 sdtdserver: START: PASS: Using cached IP as public IP address Jul 30 10:28:41.034 sdtdserver: START: INFO: Using anonymous Steam login Jul 30 10:28:41.417 sdtdserver: START: PASS: Using cached IP as public IP address Jul 30 10:28:42.007 sdtdserver: START: INFO: Rotating log files ```
Author
Owner

@irobot73 commented on GitHub (Jun 21, 2025):

With 7D2D v2.x out, I've been doing a lot more rebooting/testing. Same error, different line noted:

`linuxgsm@ca5e2367bf94:/app$ ./*server u
[ OK ] Updating sdtdserver: Checking for update: SteamCMD

Update available

[ WARN ] Updating sdtdserver: sdtdserver will be restarted
[ .... ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084/app/lgsm/modules/command_stop.sh: line 112: warning: command substitution: ignored null byte in input
[ ERROR ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084 : ... FAIL
[ .... ] Stopping sdtdserver: Graceful: telnet: 0.0.0.0:8084/app/lgsm/modules/command_stop.sh: line 112: warning: command substitution: ignored null byte in input
[ ERROR ] Stopping sdtdserver: Graceful: telnet: 0.0.0.0:8084 : ... FAIL
[ ERROR ] Stopping sdtdserver: Graceful: telnet: ... FAIL

Telnet output:
spawn telnet 0.0.0.0 8084
Trying 0.0.0.0...
Connected to 0.0.0.0.
Escape character is '^]'.
Please enter password:
Timeout or EOF

[ OK ] Stopping sdtdserver: Double-D's 7D2D Server
[ START ] Updating sdtdserver: SteamCMD
Branch: latest_experimental`

Image

<!-- gh-comment-id:2993567616 --> @irobot73 commented on GitHub (Jun 21, 2025): With 7D2D v2.x out, I've been doing a lot more rebooting/testing. Same error, different line noted: `linuxgsm@ca5e2367bf94:/app$ ./*server u [ OK ] Updating sdtdserver: Checking for update: SteamCMD Update available * Local build: 18885326 * Remote build: 18943027 * Branch: latest_experimental https://steamdb.info/app/294420/history [ WARN ] Updating sdtdserver: sdtdserver will be restarted [ .... ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084/app/lgsm/modules/command_stop.sh: line 112: warning: command substitution: ignored null byte in input [ ERROR ] Stopping sdtdserver: Graceful: telnet: 127.0.0.1:8084 : ... FAIL [ .... ] Stopping sdtdserver: Graceful: telnet: 0.0.0.0:8084/app/lgsm/modules/command_stop.sh: line 112: warning: command substitution: ignored null byte in input [ ERROR ] Stopping sdtdserver: Graceful: telnet: 0.0.0.0:8084 : ... FAIL [ ERROR ] Stopping sdtdserver: Graceful: telnet: ... FAIL Telnet output: spawn telnet 0.0.0.0 8084 Trying 0.0.0.0... Connected to 0.0.0.0. Escape character is '^]'. Please enter password: Timeout or EOF [ OK ] Stopping sdtdserver: Double-D's 7D2D Server [ START ] Updating sdtdserver: SteamCMD Branch: latest_experimental` ![Image](https://github.com/user-attachments/assets/011f8dd7-a6c7-4650-9ad5-38927bae9ab3)
Sign in to join this conversation.
No labels
Atomic
Epic
cannot reproduce
command: backup
command: console
command: debug
command: details
command: fast-dl
command: install
command: mods
command: monitor
command: post-details
command: restart
command: send
command: start
command: stop
command: update
command: update-lgsm
command: validate
command: wipe
distro: AlmaLinux
distro: Arch Linux
distro: CentOS
distro: Debian
distro: Fedora
distro: RedHat
distro: Rocky Linux
distro: Ubuntu
distro: openSUSE
engine: goldsrc
engine: source
game: 7 Days to Die
game: ARMA 3
game: Ark: Survival Evolved
game: Assetto Corsa
game: Avorion
game: BATTALION: Legacy
game: Barotrauma
game: Battalion 1944
game: Battlefield 1942
game: Black Mesa: Deathmatch
game: Blade Symphony
game: Call of Duty 2
game: Call of Duty 4
game: Call of Duty: United Offensive
game: Counter-Strike 1.6
game: Counter-Strike 2
game: Counter-Strike: Global Offensive
game: Counter-Strike: Source
game: Day of Infamy
game: Dayz
game: Death Match Classic
game: Don't Starve Together
game: ET: Legacy
game: Eco
game: Factorio
game: Factorio
game: Garry's Mod
game: Half-Life
game: Hurtword
game: Insurgecy
game: Insurgecy
game: Insurgency: Sandstorm
game: Just Cause 3
game: Killing Floor
game: Killing Floor 2
game: Left 4 Dead 2
game: Minecraft
game: Minecraft Bedrock
game: Mordhau
game: Multi Theft Auto
game: Mumble
game: Natural Selection 2
game: No More Room in Hell
game: Pavlov VR
game: Post Scriptum
game: Project Zomboid
game: Quake 3
game: QuakeWorld
game: Red Orchestra: Ostfront 41-45
game: Return to Castle Wolfenstein
game: Rising World
game: Rust
game: San Andreas Multiplayer
game: Satisfactory
game: Soldat
game: Soldier of Fortune 2
game: Squad
game: Squad 44
game: Starbound
game: Stationeers
game: Sven Co-op
game: Team Fortress 2
game: Teamspeak 3
game: Teeworlds
game: Terraria
game: The Front
game: Unreal Tournament 2004
game: Unreal Tournament 3
game: Unreal Tournament 99
game: Unturned
game: Valheim
game: Wurm Unlimited
game: Zombie Master Reborn
game: label missing
good first issue
help wanted
info: alerts
info: dependency
info: docker
info: docs
info: email
info: query
info: steamcmd
info: systemd
info: tmux
info: website
info: website
needs more info
outcome: duplicate
outcome: issue resolved
outcome: issue resolved
outcome: issue unresolved
outcome: pr accepted
outcome: pr rejected
outcome: unconfirmed
outcome: wontfix
outcome: wrong forum
potential-duplicate
priority
pull-request
type: bug
type: feature
type: feature
type: feature request
type: game server request
type: refactor
waiting response
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/LinuxGSM#2860
No description provided.