01 Apr 2020

Fatal error: glibc detected an invalid stdio handle

Aufgrund der aktuellen Corona-Krise machte ich mich auf, den alten Half Life / Counter Strike Server für meine Freunde zu reaktivieren. Ich habe das Binary, nachdem ich es gefunden habe, seit über 8 Jahren nicht mehr gestartet. Und nun das:

chrissie@fehmarn: ~/cs/ $ ./hlds_run -game cstrike
Auto detecting CPU
Using AMD Optimised binary.
Auto-restarting the server on crash
Fatal error: glibc detected an invalid stdio handle
./hlds_run: line 342: 31883 Aborted                 $HL_CMD

Was tun? Das ist nun ein ernsthaftes Problem, dem ich nachgehe und für mich löse.

Ausgangslage

Ich verwende im echten Internet einen FreeBSD-Server. Dort taucht in der Linux-Emulation in einem Jail das gleiche Problem auf. Es liegt wohl an den linux32-compat-bibliotheken. Genauer konnte ich das nicht nachvollziehen.

Tests

Erster Test war, auf meinem Gentoo-System via kvm eine 32-Bit-Installation von Debian 10 durchzufrühen. Dort läuft es komischerweise. Dann habe ich mich erinnert, dass es unter Debian Jessie 8.xx auch unter 64 Bit problemlos lief. Und deshalb weise ich den geneigten Leser weiter:

Installation von Debian Jessie mit Bhyve

32-Bit Compat

Wenn man das erledigt hat, hat man aber immer noch ein 64-Bit-System, auf dem hlds nicht läuft. Man braucht noch das 32-Bit-System via Debian Multilib. Dann kann man endlich dem klassischen Taktik-Shooter frönen!

# dpkg --add-architecture i386
# apt-get update
# apt-get install build-essential gcc-multilib rpm libstdc++6:i386 \
  libgcc1:i386 zlib1g:i386 libncurses5:i386

Counter Terrorists win!