[Bug]: Dystopia segfaults on start: missing 32-bit libcurl

未关闭
#5,159 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

已经有一个关联 PR 被合并了。

  • #5160 来自 @dgibbs64 —— 已合并

评估

难度
1/5
预计耗时
1 小时以内
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
bash, linux
领域
cli, devops

调研方向

Start by reading the dys dependency row in lgsm/data/*.csv and compare it with the missing libcurl-gnutls.so.4 reported by ldd -r. Check the dependency conventions for 32-bit packages and confirm the fix installs the required libcurl package; done means the server starts and answers queries with the dependency listed.

由索引模型根据 Issue 内容生成。

描述

distro: Ubuntu engine: source game: Dystopia info: dependency info: docker status: fixed in develop type: bug
Severity

High: the server does not start

Reproducibility

Always

Regression

Not a regression: the dependency has never been listed

Affects latest release

Yes

User story

As a Dystopia server owner, I want the server to start, so that players can join.

Script name

dysserver

Game

Dystopia

Linux distro

Ubuntu 26.04 (the gameserver:dys docker image). Any distro that installs only the listed dependencies is affected.

Command

start

Expected behavior

The server loads its map and answers queries.

Actual behavior

srcds crashes in a loop straight after breakpad init, with no error message. The kernel logs a NULL function call: srcds_linux: segfault at 0 ip 0000000000000000.

Further information

Backtrace under gdb:

#0  0x00000000 in ?? ()
#1  CModAppSystemGroup::Create() () from bin/linux32/engine_srv.so
#2  CAppSystemGroup::OnStartup() () from bin/linux32/engine_srv.so
#3  CAppSystemGroup::Run() () from bin/linux32/engine_srv.so
#4  CDedicatedServerAPI::ModInit(ModInfo_t&) () from bin/linux32/engine_srv.so

ServerDLL_Load returns, then the engine calls the server factory, which is NULL because bin/linux32/server_srv.so failed to load:

$ ldd -r bin/linux32/server_srv.so
	libcurl-gnutls.so.4 => not found
undefined symbol: curl_global_init, version CURL_GNUTLS_3

The dys row in the dependency lists (lgsm/data/*.csv) is empty, so 32-bit libcurl is never installed. Installing libcurl4-gnutls-dev:i386 makes the server start and answer queries.

Relevant log output
Using breakpad minidump system. Version: 1 AppID: 17580
Setting breakpad minidump AppID = 17580
Using breakpad crash handler
./srcds_run.sh: line 62: Segmentation fault (core dumped) ${DEBUGGER} "${GAMEROOT}"/bin/${PLATFORMDIR}/${GAMEEXE} "$@"
Steps to reproduce
  1. Install dysserver on Ubuntu 26.04 with only the listed dependencies.
  2. Run ./dysserver start.
  3. The console shows a segfault after Using breakpad crash handler, and the server never answers a query.
主要语言
Shell
星标
4.9k
派生
870
平均合并
20 小时 11 分钟
30 天内合并 PR
135

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

GameServerManagers/LinuxGSM 的其他 Issue

查看 GameServerManagers/LinuxGSM 的全部 Issue

相似的 Issue

更多 Shell/Bash Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。