[PR #4788] fix(mods): BepInEx_Valheim prevents startup on systems with newer glibc #4436

Open
opened 2026-02-27 04:55:09 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/GameServerManagers/LinuxGSM/pull/4788
Author: @fwillo
Created: 6/13/2025
Status: 🔄 Open

Base: developHead: develop


📝 Commits (1)

  • 7cb295b fix(mods): BepInEx_Valheim prevents startup on systems with newer glibc

📊 Changes

1 file changed (+1 additions, -1 deletions)

View changed files

📝 lgsm/modules/fix_vh.sh (+1 -1)

📄 Description

Description

Installing BepInEx mod for Valheim via the LinuxGSM scripts installs a script called fix_vh.sh. In there the required lines of commands are introduced in order to work, as described in https://thunderstore.io/c/valheim/p/denikson/BepInExPack_Valheim/ . However, systems which have programms installed based on newer versions of glibc crash the startup of the server with a lot of

  • ld.so: object 'libdoorstop_x64.so' from LD_PRELOAD cannot be preloaded
  • readlink: symbol lookup error: /home/XXX/serverfiles/BepInExPack_Valheim/doorstop_libs/libdoorstop_x64.so: undefined symbol: dlopen
  • Failed to hook dlsym, ignoring it. Error: no such function: dlsym

This causes sometimes to prevent starting the server or if the server starts to load the mod. Starting the Server in Debug mode gives

~$ LC_ALL=C ./vhserver debug

Valheim Debugging
=================================
[ INFO ] Debugging vhserver: BepInEx install detected, applying start exports
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
/home/XXX/lgsm/modules/info_distro.sh: line 172: to
16046520: syntax error in expression (error token is "16046520")
jq: parse error: Invalid numeric literal at line 1, column 7
jq: parse error: Invalid numeric literal at line 1, column 7
jq: parse error: Invalid numeric literal at line 1, column 7
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
Distro:
Arch Linux
Architecture:       Failed to hook dlsym, ignoring it. Error: no such function: dlsym
x86_64
Kernel:             Failed to hook dlsym, ignoring it. Error: no such function: dlsym
6.14.4-arch1-1
Hostname:           XXX
tmux:               to
3.5a
Avg Load:
0.26, 0.58, 0.68
Free Memory:        12GB
Free Disk:          dlsym,
46G
glibc required: 2.14 (distro glibc Failed to hook dlsym, ignoring it. Error: no such function: dlsym
2.41 too old)
Game Server IP: 0.0.0.0:2456
Internet IP:    Failed to hook dlsym, ignoring it. Error: no such function: dlsym:2456
Server password:        XXX
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
./vhserver: line 526: to: command not found
./vhserver: line 527: -name 'XXX' -password XXX -port 2456 -world vhserver -public 0 -savedir '/home/XXX/.config/unity3d/IronGate/Valheim' -saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200 -instanceid 1: No such file or directory
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
Failed to hook dlsym, ignoring it. Error: no such function: dlsym
Start parameters:
 ./valheim_server.x86_64 -name 'XXX' -password XXX -port 2456 -world vhserver -public 0 -savedir '/home/XXX/.config/unity3d/IronGate/Valheim' -saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200 -instanceid 1

Use debug for identifying server issues only!
Press CTRL+c to drop out of debug mode.
Warning! If vhserver is already running it will be stopped.
Failed to hook dlsym, ignoring it. Error: no such function: dlsym

This error is described in #4149 and #4491 and this pull request fixes them.

fix_vh.sh uses export LD_PRELOAD=libdoorstop_x64.so:${LD_PRELOAD}, as it is used in the original startup scripts of BepInEx_Valheim. However, by this the library is preloaded for every process involved in the startup. In the original startup script this is no issue, since only the server executable is run.

I suggest to use the existing ${preexecutable} varibale to put the LD_PRELOAD in front of the tmux-execution command, now solely addressing the preload of the library only for the server executable. This solution was tested and gives for the debug command

~$ LC_ALL=C ./vhserver debug

Valheim Debugging
=================================
[ INFO ] Debugging vhserver: BepInEx install detected, applying start exports
Distro:          Arch Linux
Architecture:    x86_64
Kernel:          6.14.4-arch1-1
Hostname:        XXX
tmux:            3.5a
Avg Load:        0,25, 0,40, 0,49
Free Memory:     12GB
Free Disk:       46G
glibc required: 2.15
Game Server IP: 0.0.0.0:2456
Internet IP:    XXX.XXX.XXX.XXX:2456
Server password:        XXX
Start parameters:
 LD_PRELOAD="libdoorstop_x64.so:${LD_PRELOAD}"  ./valheim_server.x86_64 -name 'XXX' -password XXX -port 2456 -world vhserver -public 0 -savedir '/home/XXX/.config/unity3d/IronGate/Valheim' -saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200 -instanceid 1

Use debug for identifying server issues only!
Press CTRL+c to drop out of debug mode.
Warning! If vhserver is already running it will be stopped.

Continue? [Y/n] Y

Type of change

  • Bug fix (a change which fixes an issue).
  • New feature (a change which adds functionality).
  • New Server (new server added).
  • Refactor (restructures existing code).
  • Comment update (typo, spelling, explanation, examples, etc).

Checklist

PR will not be merged until all steps are complete.

  • This pull request links to an issue.
  • This pull request uses the develop branch as its base.
  • This pull request subject follows the Conventional Commits standard.
  • This code follows the style guidelines of this project.
  • I have performed a self-review of my code.
  • I have checked that this code is commented where required.
  • I have provided a detailed enough description of this PR.
  • I have checked if documentation needs updating.

Documentation

If documentation does need updating either update it by creating a PR (preferred) or request a documentation update.

Thank you for your Pull Request!


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/GameServerManagers/LinuxGSM/pull/4788 **Author:** [@fwillo](https://github.com/fwillo) **Created:** 6/13/2025 **Status:** 🔄 Open **Base:** `develop` ← **Head:** `develop` --- ### 📝 Commits (1) - [`7cb295b`](https://github.com/GameServerManagers/LinuxGSM/commit/7cb295ba8f1300c14def9cbb3cb7b2c5de7e6ca7) fix(mods): BepInEx_Valheim prevents startup on systems with newer glibc ### 📊 Changes **1 file changed** (+1 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `lgsm/modules/fix_vh.sh` (+1 -1) </details> ### 📄 Description # Description Installing BepInEx mod for Valheim via the LinuxGSM scripts installs a script called `fix_vh.sh`. In there the required lines of commands are introduced in order to work, as described in https://thunderstore.io/c/valheim/p/denikson/BepInExPack_Valheim/ . However, systems which have programms installed based on newer versions of glibc crash the startup of the server with a lot of - `ld.so: object 'libdoorstop_x64.so' from LD_PRELOAD cannot be preloaded` - `readlink: symbol lookup error: /home/XXX/serverfiles/BepInExPack_Valheim/doorstop_libs/libdoorstop_x64.so: undefined symbol: dlopen` - `Failed to hook dlsym, ignoring it. Error: no such function: dlsym` This causes sometimes to prevent starting the server or if the server starts to load the mod. Starting the Server in Debug mode gives ``` ~$ LC_ALL=C ./vhserver debug Valheim Debugging ================================= [ INFO ] Debugging vhserver: BepInEx install detected, applying start exports Failed to hook dlsym, ignoring it. Error: no such function: dlsym /home/XXX/lgsm/modules/info_distro.sh: line 172: to 16046520: syntax error in expression (error token is "16046520") jq: parse error: Invalid numeric literal at line 1, column 7 jq: parse error: Invalid numeric literal at line 1, column 7 jq: parse error: Invalid numeric literal at line 1, column 7 Failed to hook dlsym, ignoring it. Error: no such function: dlsym Distro: Arch Linux Architecture: Failed to hook dlsym, ignoring it. Error: no such function: dlsym x86_64 Kernel: Failed to hook dlsym, ignoring it. Error: no such function: dlsym 6.14.4-arch1-1 Hostname: XXX tmux: to 3.5a Avg Load: 0.26, 0.58, 0.68 Free Memory: 12GB Free Disk: dlsym, 46G glibc required: 2.14 (distro glibc Failed to hook dlsym, ignoring it. Error: no such function: dlsym 2.41 too old) Game Server IP: 0.0.0.0:2456 Internet IP: Failed to hook dlsym, ignoring it. Error: no such function: dlsym:2456 Server password: XXX Failed to hook dlsym, ignoring it. Error: no such function: dlsym Failed to hook dlsym, ignoring it. Error: no such function: dlsym ./vhserver: line 526: to: command not found ./vhserver: line 527: -name 'XXX' -password XXX -port 2456 -world vhserver -public 0 -savedir '/home/XXX/.config/unity3d/IronGate/Valheim' -saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200 -instanceid 1: No such file or directory Failed to hook dlsym, ignoring it. Error: no such function: dlsym Failed to hook dlsym, ignoring it. Error: no such function: dlsym Failed to hook dlsym, ignoring it. Error: no such function: dlsym Failed to hook dlsym, ignoring it. Error: no such function: dlsym Failed to hook dlsym, ignoring it. Error: no such function: dlsym Start parameters: ./valheim_server.x86_64 -name 'XXX' -password XXX -port 2456 -world vhserver -public 0 -savedir '/home/XXX/.config/unity3d/IronGate/Valheim' -saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200 -instanceid 1 Use debug for identifying server issues only! Press CTRL+c to drop out of debug mode. Warning! If vhserver is already running it will be stopped. Failed to hook dlsym, ignoring it. Error: no such function: dlsym ``` This error is described in #4149 and #4491 and this pull request fixes them. `fix_vh.sh` uses `export LD_PRELOAD=libdoorstop_x64.so:${LD_PRELOAD}`, as it is used in the original startup scripts of BepInEx_Valheim. However, by this the library is preloaded for every process involved in the startup. In the original startup script this is no issue, since only the server executable is run. I suggest to use the existing `${preexecutable}` varibale to put the `LD_PRELOAD` in front of the tmux-execution command, now solely addressing the preload of the library only for the server executable. This solution was tested and gives for the debug command ``` ~$ LC_ALL=C ./vhserver debug Valheim Debugging ================================= [ INFO ] Debugging vhserver: BepInEx install detected, applying start exports Distro: Arch Linux Architecture: x86_64 Kernel: 6.14.4-arch1-1 Hostname: XXX tmux: 3.5a Avg Load: 0,25, 0,40, 0,49 Free Memory: 12GB Free Disk: 46G glibc required: 2.15 Game Server IP: 0.0.0.0:2456 Internet IP: XXX.XXX.XXX.XXX:2456 Server password: XXX Start parameters: LD_PRELOAD="libdoorstop_x64.so:${LD_PRELOAD}" ./valheim_server.x86_64 -name 'XXX' -password XXX -port 2456 -world vhserver -public 0 -savedir '/home/XXX/.config/unity3d/IronGate/Valheim' -saveinterval 1800 -backups 4 -backupshort 7200 -backuplong 43200 -instanceid 1 Use debug for identifying server issues only! Press CTRL+c to drop out of debug mode. Warning! If vhserver is already running it will be stopped. Continue? [Y/n] Y ``` ## Type of change - [X] Bug fix (a change which fixes an issue). - [ ] New feature (a change which adds functionality). - [ ] New Server (new server added). - [ ] Refactor (restructures existing code). - [ ] Comment update (typo, spelling, explanation, examples, etc). ## Checklist PR will not be merged until all steps are complete. - [X] This pull request links to an issue. - [X] This pull request uses the `develop` branch as its base. - [X] This pull request subject follows the Conventional Commits standard. - [X] This code follows the style guidelines of this project. - [X] I have performed a self-review of my code. - [X] I have checked that this code is commented where required. - [X] I have provided a detailed enough description of this PR. - [X] I have checked if documentation needs updating. ## Documentation If documentation does need updating either update it by creating a PR (preferred) or request a documentation update. - User docs: https://github.com/GameServerManagers/LinuxGSM-Docs - Dev docs: https://github.com/GameServerManagers/LinuxGSM-Dev-Docs **Thank you for your Pull Request!** --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
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#4436
No description provided.