故障排查
服务器一启动就崩溃(「Illegal instruction」之类)
ReHLDS 的二进制文件需要 SSE、SSE2 和 SSE3 指令集(在可用时还会使用 SSE4.1 / SSE4.2)。这几乎总是处理器或虚拟化的问题,而不是配置问题:
- 确认宿主机的处理器确实支持 SSE3。在 2005 年以后的真实硬件上很少出问题,但某些精简的 VPS 或虚拟机配置只向客户机暴露了缩减过的指令集。
- 如果服务器运行在虚拟机中,请检查虚拟化平台的处理器型号和特性透传设置。
引擎加载失败,或表现得像「文件不对」
通常是引擎版本或平台不匹配:
- 确认基础服务器是通过
steamcmd安装的周年更新前 Steam 构建(引擎版本 ≤ 8684),具体见安装一节。ReHLDS 不兼容通过旧版hldsupdatetool安装的 5xxx 及更早构建。 - 确认你复制的是与操作系统相符的文件:Windows 用
swds.dll,Linux 用engine_i486.so。混用其他平台的文件(或只复制了一部分)都无法加载。 - 在 Linux 上,确认替换后的文件仍然对运行服务器的账户保留了读取和执行权限。
安装 ReHLDS 后第三方插件失效
ReHLDS 与原版 HLDS 不是二进制兼容的——它使用与 Valve 原始文件不同的编译器构建。对引擎做底层二进制修补或特征码扫描的插件(已知的例子是 Orpheu)可能因此失效,除非插件显式支持 ReHLDS。在断定是 ReHLDS 本身的问题之前,请先查看该插件自己的更新日志和问题追踪器中有无关于 ReHLDS 兼容性的说明。
GPG 签名验证失败
- 确认你导入的是正确的公钥(指纹
63547829004f07716f7be4856c32c4282e60fb67),可从 keyserver.ubuntu.com 之类的密钥服务器获取。 - 确认
.asc签名文件与你下载的压缩包配套——它们按发行版成对发布,不同版本之间不能互换。 - 如果其中任一文件被中间代理或 CDN 修改过,请重新下载两个文件(某些企业代理会改写下载的二进制内容)。
如何获取崩溃信息
如果服务器是崩溃退出而非正常退出:
- Linux——使用
-debug参数启动服务器。若已安装gdb,ReHLDS 会自动把崩溃详情写入debug.log,通常足以定位崩溃位置,而无需完整的核心转储。若还想保留核心转储,请在启动服务器前为该进程开启(ulimit -c unlimited),并可考虑执行echo 1 > /proc/sys/kernel/core_uses_pid,以免多次崩溃互相覆盖。 - Windows——通过 Windows 错误报告为
hlds.exe开启小型转储或完整转储(在组策略中依次是计算机配置 → 管理模板 → Windows 组件 → Windows 错误报告,或使用对应的注册表项),也可以使用专门的崩溃转储工具。
注意
崩溃转储和 debug.log 可能包含服务器的敏感信息(包括与 RCON 相关的数据)。请勿公开发布——与开发者共享时,请通过私密渠道直接发送,或放入加密并设置密码的压缩包。
如何反馈问题
请在 ReHLDS 问题追踪器中新建 issue,并附上:
- ReHLDS 的构建或版本(发行标签或提交)以及平台(Windows/Linux)。
- 安装所基于的 HLDS 引擎的确切构建或版本。
- 你运行的模组(Half-Life、Counter-Strike 1.6、Condition Zero 等)及其版本。
- 如有使用,请附上 Metamod、AMX Mod X、ReGameDLL_CS 的版本和插件列表。
- 复现问题的步骤,以及相关的控制台输出、
debug.log或崩溃转储。
一开始提供的细节越充分,维护者复现并修复问题就越快。