All memory addresses are in relation to the latest public executable (SHA-1: 8CADA155720C5D05596D0838D014E3E018F0708B).
With Application Verifier enabled, an unitialized critical section shows up:
=======================================
VERIFIER STOP 00000210: pid 0x2AA8: Critical section not initialized.
14A16FBC : Critical section address. Run !cs -s <address> to get more information.
1418EFE0 : Critical section debug info address.
00000000 : Not used.
00000000 : Not used.
=======================================
This happens at a call to InitializeCriticalSection at 0x496DD8. Function in question is a 14th virtual method of
an unknown class initialized inside a method which contains the only "UserInputPC"
string in entire executable,
so should be trivial to find.
Crashing method is of an unknown purpose and is not trivial to identify - the best lead may be that it invokes GetAsyncKeyState
.
From what I can tell, looks like this class is constructed (with critical section being properly initialized), then its virtual method table is copied elsewhere, followed by a call to destructor. This may indicate that custom initialization performed for this class is incomplete, since it does not initialize the critical section.
REPRO PATH (100% success rate):
- Open Application Verifier
- Add auralux2.exe (leave default verifier options)
- Launch the game from a debugger
- Observe a breakpoint being triggered by an attempt to enter an unitialized critical section.
This is most likely not a severe issue, but seeing how several people report startup crashes, this could be one of the causes.