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!