In SubmitErrorReport() of WindowsPlatformMisc.cpp we define a TCHAR EngineVersionStr[32] but, the string returned by *GEngineVersion.ToString() is greater than 32 characters! In my tests, this results in an overwrite of the memory assigned to TCHAR SystemTime[256], resetting that string to “” (which subsequently fails validation by the AutoReporter since SystemTime is an empty string).
NOTE: This same bug also manifests itself in appHandleCriticalError() of LMDebug.cpp since the code is very similar.
I did some poking in the source code and it appears that the Engine version string that is being created is 33 characters long, including the terminating character. However, I had some trouble seeing how this affected the SystemTime array. What is your test case for this scenario?
We have not heard back from you for a few days. Do you still need any help with this issue? I will be marking this issue as resolved for internal tracking purposes, but please feel free to re-open this issue at any time.
The SystemTime is just how that memory overrun manifests itself on my end. I only meant to point out that the holding buffer (array) is too small, which is the real issue here. But, thanks for looking into this.
I just wanted to provide a quick update on this. I was looking through the source code in our latest internal build of the Engine, and it appears that all of the TChar array sizes in this function have been set to a constant 256. It looks like this change took place here. If you have built the Engine from source code, you can merge this change into your source code. If you are using the binary version of the Engine installed by the Launcher, this change will be included in a future release version of the Engine.