View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0004879||The Dark Mod||Coding||public||02.09.2018 05:57||02.09.2018 06:41|
|Product Version||TDM 2.06|
|Target Version||TDM 2.07||Fixed in Version||TDM 2.07|
|Summary||0004879: TDM binary crashes during startup on old Linux|
|Description||Originally reported here:|
When starting TDM official Linux build, it immediately crashes with error:
./thedarkmod.x86: relocation error: ./thedarkmod.x86: symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
At least the following OSes are affected:
Ubuntu 14.04 LTS (released in 2014)
Linux Mint 17.3 Rosa (released in 2015)
|Tags||No tags attached.|
GCC broke ABI of C++ standard library for std::string and std::list. This is perhaps the only known case when they did so, and they had to do so to adhere to new C++11 standard. While breaking ABI by default, they allowed to return back to the old ABI if wanted (in exchange for not being C++11-compliant).
TDM 2.06 binaries were compiled with C++11 with the new C++11 ABI. If you have old version of C++ standard library (it is something like glibc or glibcxx or libstdc++), then you cannot run these binaries. The only way to run the new binary is to get newer version of C++ standard libs somehow and make sure TDM uses them.
Alternative solution is to rebuild TDM from source code. In order to build with old C++ ABI on new Linux, you have to add the following line:
BASECPPFLAGS.append( '-D_GLIBCXX_USE_CXX11_ABI=0' )
into SConstruct file at source code root directory, and then build according to wiki instructions. The resulting binary would be compatible with old C++ libraries, so you will be able to run it. If you have old GCC/Linux, then even this define is not necessary.
Reverted to old ABI in svn rev 7675.
Now no matter where you build TDM, the GCC-produced binaries should run both on old and new OS-es.
|02.09.2018 05:57||stgatilov||New Issue|
|02.09.2018 05:57||stgatilov||Status||new => assigned|
|02.09.2018 05:57||stgatilov||Assigned To||=> stgatilov|
|02.09.2018 05:59||stgatilov||Note Added: 0010748|
|02.09.2018 06:19||stgatilov||Note Added: 0010749|
|02.09.2018 06:19||stgatilov||Status||assigned => resolved|
|02.09.2018 06:19||stgatilov||Resolution||open => fixed|
|02.09.2018 06:41||stgatilov||Fixed in Version||=> TDM 2.07|