Opened 5 years ago

Last modified 4 years ago

#5527 closed defect

VS2015 requires Universal C Runtime (CRT) — at Version 3

Reported by: historic_bruno Owned by:
Priority: Release Blocker Milestone: Alpha 24
Component: Build & Packages Keywords:
Cc: Itms Patch:

Description (last modified by historic_bruno)

As explained here, VS 2015 introduces the Universal CRT which is a component of Windows 10. Earlier versions of Windows must install update KB2999226, or the VCRedist package for VC++ 2015 (you already have it if you installed VS 2015). Windows XP users won't get the Windows update, so they must install the VCRedist package.

Another option is "app-local deployment", where we copy all of the UCRT DLLs from the Windows 10 SDK (although I tried this and it failed on XP; copying them from the vcredist package worked), alongside the rest of the game's binaries. There are 41 of them, but it's < 2 MB total:

C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-file-l1-2-0.dll
api-ms-win-core-file-l2-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-l1-2-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-string-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-timezone-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-crt-conio-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-multibyte-l1-1-0.dll
api-ms-win-crt-private-l1-1-0.dll
api-ms-win-crt-process-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
ucrtbase.dll

Change History (3)

comment:1 by historic_bruno, 5 years ago

Cc: Itms added

comment:2 by historic_bruno, 5 years ago

Description: modified (diff)

comment:3 by historic_bruno, 5 years ago

Description: modified (diff)

Instant error on startup when using app-local deployment on XP:

.  0  Id: 78c.50c Suspend: 1 Teb: 7ffdd000 Unfrozen
ChildEBP RetAddr  
0012fe40 003abb79 kernel32!RaiseException+0x53
0012fe9c 003ab6a9 MSVCP140!__delayLoadHelper2(struct ImgDelayDescr * pidd = 0x003b4070, <function> ** ppfnIATEntry = 0x003d702c)+0x16c [f:\dd\vctools\delayimp\delayhlp.cpp @ 323]
0012fedc 0038c45f MSVCP140!_tailMerge_CONCRT140_dll+0xd
*** WARNING: Unable to verify checksum for pyrogenesis.exe
0012fee8 004eb99e MSVCP140!_Mtx_init_in_situ(struct _Mtx_internal_imp_t * mtx = 0x007c0d20, int type = 0n2)+0xf [f:\dd\vctools\crt\crtw32\stdcpp\thr\mutex.c @ 44]
0012ff18 004018d8 pyrogenesis!CLogger::CLogger(class std::basic_ostream<char,std::char_traits<char> > * mainLog = 0x007c0c98, class std::basic_ostream<char,std::char_traits<char> > * interestingLog = 0x007c0c98, bool takeOwnership = false, bool useDebugPrintf = true)+0x8e [e:\jenkins\workspace\vs2015_autobuild\source\ps\clogger.cpp @ 83]
0012ff2c 009381cd pyrogenesis!`dynamic initializer for 'nullLogger''(void)+0x18 [e:\jenkins\workspace\vs2015_autobuild\source\ps\clogger.cpp @ 49]
0012ff48 006b4524 ucrtbase!_initterm+0x6d
0012ff8c 00664a3f pyrogenesis!__scrt_common_main_seh(void)+0x7b [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl @ 221]
0012ffc0 7c816037 pyrogenesis!CallStartupWithinTryBlock(void)+0x3f [e:\jenkins\workspace\vs2015_autobuild\source\lib\sysdep\os\win\wseh.cpp @ 365]
0012fff0 00000000 kernel32!BaseProcessStart+0x23

Installing the vcredist _does_ work. The game actually does run nicely on XP, and I was able to connect to the lobby after adding TLS 1.1/1.2 support via a Windows update.

Note: See TracTickets for help on using tickets.