Srcds.

The hard dependency on SSE3 instructions (FISTTPL) makes srcds_linux abort with “Illegal instruction” on certain CPUs. Version unknown since there is no logging or anything before it crashes, but here goes md5sum(libvstdlib.so) = 0b4720f7e307332fba3aed57d2e704e8. Is it too much to ask supporting slightly less-capable CPUs?

cs_go> ulimit -c unlimited
cs_go> ./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_bomb +map de_dust2 -ip 0.0.0.0 +hostname tester
Server will auto-restart if there is a crash.
LD_LIBRARY_PATH=/home/tomentor/gameserver/cs_go/bin:/home/tomentor/gameserver/cs_go:/home/tomentor/gameserver/cs_go/bin:
./srcds_run: Zeile 318:  3887 Illegal instruction  (core dumped) $HL_CMD
Add "-debug" to the ./srcds_run command line to generate a debug.log to help with solving this problem
Wed Oct  8 18:03:45 CEST 2014: Server restart in 10 seconds
^C
Wed Oct  8 18:03:47 CEST 2014: Server Quit

cs_go> gdb srcds_run core
GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
[...]
Core was generated by `./srcds_linux -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup'.
Program terminated with signal SIGILL, Illegal instruction.
#0  0xa7447613 in ConVar::Create(char const*, char const*, int, char const*, bool, float, bool, float, void (*)(IConVar*, char const*, float)) ()
   from /home/tomentor/gameserver/cs_go/bin/libvstdlib.so
(gdb) disas 0xa7447613,0xa7447623
Dump of assembler code from 0xa7447613 to 0xa7447623:
=> 0xa7447613 <_ZN6ConVar6CreateEPKcS1_iS1_bfbfPFvP7IConVarS1_fE+243>:  fisttpl 0x30(%ebx)
   0xa7447616 <_ZN6ConVar6CreateEPKcS1_iS1_bfbfPFvP7IConVarS1_fE+246>:  jmp    0xa74475c2 <_ZN6ConVar6CreateEPKcS1_iS1_bfbfPFvP7IConVarS1_fE+162>
   0xa7447618 <_ZN6ConVar6CreateEPKcS1_iS1_bfbfPFvP7IConVarS1_fE+248>:  nop
   0xa7447619 <_ZN6ConVar6CreateEPKcS1_iS1_bfbfPFvP7IConVarS1_fE+249>:  lea    0x0(%esi,%eiz,1),%esi
   0xa7447620 <_ZN6ConVar6CreateEPKcS1_iS1_bfbfPFvP7IConVarS1_fE+256>:  mov    0x24(%ebx),%eax
End of assembler dump.

# /proc/cpuinfo
processor       : 3
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Xeon(TM) CPU 2.80GHz
stepping        : 7
microcode       : 0x38
cpu MHz         : 2791.010
cache size      : 512 KB
physical id     : 3
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 7
initial apicid  : 7
fdiv_bug        : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pebs bts cid xtpr
bogomips        : 5580.52
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 32 bits virtual
power management:

Update 2016-12-20 18:40: More idiotic hard dependencies, games now requiring SSSE4 (German).

Posted 2014-10-08 16:10 / link