War2 Remastered Bug Report

Warcraft II Remastered 1.0.2.2818 — Repeated Access Violation / Invalid Pointer Read

Warcraft II Remastered repeatedly crashes to desktop during normal gameplay without displaying an error.

I performed debugging with WinDbg and was able to capture the underlying exception.

Environment

Game: Warcraft II Remastered
Game version: 1.0.2.2818
Executable: Warcraft II.exe
Executable path: D:\Blizzard\Warcraft II Remastered\x86\Warcraft II.exe
Architecture: x86 / 32-bit executable
Launch method: Battle.net

Battle.net Scan and Repair was performed successfully before reproducing the crash.

Symptoms

The game abruptly exits during gameplay.

There is:

  • No visible crash/error dialog.

  • No corresponding Application Error event in Windows Event Viewer.

  • No failure recorded in Windows Reliability Monitor.

  • No WER LocalDump generated despite LocalDumps being explicitly enabled for Warcraft II.exe.

  • Battle.net simply detects that the game process is no longer running.

Monitoring the Battle.net-launched process showed a final process exit code of:

-1073740791 (0xC0000409)

I subsequently attached WinDbg to the Battle.net-launched Warcraft II process and reproduced the failure under the debugger.

Actual exception captured by WinDbg

0xC0000005 — Access violation

WinDbg analysis:

Failure.Bucket: INVALID_POINTER_READ_c0000005_Warcraft_II.exe!Unknown

Failure.ProblemClass.Primary: INVALID_POINTER_READ

Failure.Exception.IP.Module: Warcraft_II

Failure.Exception.IP.Offset: 0x218c60

IMAGE_VERSION: 1.0.2.2818

Exception record:

ExceptionAddress: Warcraft_II+0x218c60

ExceptionCode: c0000005 (Access violation)

Attempt to read from address 00000032

The faulting instruction is:

Warcraft_II+0x218c60

cvtsi2ss xmm1,dword ptr [edx+8]

At the time of the exception:

EDX = 0000002A

Therefore the instruction attempts to dereference:

[0x2A + 0x08] = 0x00000032

which produces the access violation.

Relevant register state

EAX = 1c300870

EBX = 0000002a

ECX = 0000003a

EDX = 0000002a

ESI = 00000022

EDI = 1c147c78

EIP = 011e8c60

EBP = 004ff208

Relevant code immediately preceding fault

Warcraft_II+0x218c31: mov ecx,dword ptr [ebp-4]

Warcraft_II+0x218c34: mov edx,dword ptr [ecx+44h]

Warcraft_II+0x218c37: lea eax,[edx*4+1]

Warcraft_II+0x218c3e: push eax

Warcraft_II+0x218c3f: mov ecx,dword ptr [ebp-0Ch]

Warcraft_II+0x218c42: call Warcraft_II+0x219360

Warcraft_II+0x218c47: mov ecx,dword ptr [ebp-4]

Warcraft_II+0x218c4a: add ecx,10h

Warcraft_II+0x218c4d: mov dword ptr [ebp-10h],ecx

Warcraft_II+0x218c50: cvtsi2ss xmm0,dword ptr [ebp+8]

Warcraft_II+0x218c55: addss xmm0,dword ptr [Warcraft_II+0x44249c]

Warcraft_II+0x218c5d: mov edx,dword ptr [ebp-4]

Warcraft_II+0x218c60: cvtsi2ss xmm1,dword ptr [edx+8] <-- ACCESS VIOLATION

The value stored at [ebp-4] appears to be invalid by the time execution reaches Warcraft_II+0x218c5d.

Of particular interest is the call immediately preceding the eventual invalid dereference:

Warcraft_II+0x219360

The same [ebp-4] value is dereferenced earlier at Warcraft_II+0x218c34. If its value had already been 0x2A at that point, the process would have faulted there. This suggests the value may be changing/corrupted during the intervening execution, potentially during or as a consequence of the call to Warcraft_II+0x219360.

Stack

The captured stack contains Warcraft II executable frames until normal Windows thread initialization:

Warcraft_II+0x218c60

Warcraft_II+0x10ddd3

Warcraft_II+0x115378

Warcraft_II+0x1f4903

Warcraft_II+0x1a1648

Warcraft_II+0x214838

Warcraft_II+0x198338

Warcraft_II+0x198648

Warcraft_II+0xa4dc9

Warcraft_II+0xc5502

Warcraft_II+0xc5b60

Warcraft_II+0xd1132

Warcraft_II+0xd118e

Warcraft_II+0xd1689

Warcraft_II+0x41e343

Warcraft_II+0x41e1c8

Warcraft_II+0x3ea02c

KERNEL32!BaseThreadInitThunk

ntdll!__RtlUserThreadStart

No third-party module appears in the captured call stack at the point of failure.

Request

Please investigate the invalid pointer dereference at Warcraft_II+0x218c60 in build 1.0.2.2818, particularly the validity/lifetime of the object referenced through [ebp-4] and execution surrounding Warcraft_II+0x219360.

The crash is reproducible during gameplay and makes the game unreliable to play.

In less technical terms: please fix this thing. I just want to play Warcraft II.

Trying to determine how to duplicate the issue.

I’m not having any technical issues with it.

I’m just playing through the original Warcraft 2 scenarios. I’ll be playing and it will just crash. I’ve not been able to discern a pattern because it’s not always at the same spot.

So it has something to do with your system you have it installed on perhaps?

Again, not having any issues myself. I ran through few campaign scenarios with no issues.

I’ve noticed a few different issues being reported with Warcraft II: Remastered, so it would be helpful if each bug report included the exact steps to reproduce the problem, game version, and relevant system details. That makes it easier to determine whether an issue is hardware-specific or affecting multiple players.

Hopefully the developers can continue addressing the smaller bugs through future updates. The remaster has a lot of potential, and improving stability and fixing gameplay issues would make the overall experience much better.

For now, I’m keeping an eye on the updates and taking a quick break with candyjump when troubleshooting gets frustrating.

Top priority should be the save game reloading breaking the enemy AI, it’s literally a vanilla problem and it’s beyond scandalous it’s been ignored.