Всем привет. Иногда вылетает карта по непонятной причине, может кто сможет определить по коду ошибки в чем дело и что надо в редакторе пофиксить.
Вылет бывает примерно 1 раз за 50+- игр. В этой ошибке всех игроков выкинуло.
Карта Шахтеры - Miners (v1.47.17k8) , irinabot.ru/maps/20662
Открыть
==============================================================================
Warcraft III (build 6401)
Exe: F:\Warcraft III 1.26S\war3.exe
Time: Sep 12, 2023 10:24:18.398 PM
User: Electr0_H0use
Computer: DESKTOP-DKX2881

This application has encountered a critical error:
FATAL ERROR!
Program: F:\Warcraft III 1.26S\war3.exe
Exception: 0xC0000005 (ACCESS_VIOLATION) at 0023:6F430C91
The instruction at '0x6F430C91' referenced memory at '0x00000020'.
The memory could not be 'read'.
War3Build: 1.26.0.6401
Played Maps\Download\20662_Miners_v1.47.17k8.w3x
Player 0 Electr0_H0use Race Human StartLoc 0
Player 1 dimause Race Human StartLoc 1
Player 2 zloe_m9y Race Human StartLoc 2
Player 3 termosssss Race Human StartLoc 3
Player 4 doazeok Race Human StartLoc 4
Player 5 DrochillaPrime Race Human StartLoc 5
Player 6 Игрок 7 Race Human StartLoc 6
Player 7 Игрок 8 Race Human StartLoc 7
Player 8 Игрок 9 Race Human StartLoc 8
Player 9 dkmen12ru Race Undead StartLoc 9
Player 10 EvilmOuse Race Undead StartLoc 10
Player 11 Паучки (ИИ) Race Undead StartLoc 11


x86 Registers

EAX=175E27B4 EBX=175E27B4 ECX=175E27B4 EDX=00000000 ESI=00000010
EDI=0019DF90 EBP=00000010 ESP=0019DF18 EIP=6F430C91 FLG=00010202
CS =0023 DS =002B ES =002B SS =002B FS =0053 GS =002B

Stack Trace (Manual)

Address Frame Logical addr Module
6F430C91 00000010 0001:0042FC91 F:\Warcraft III 1.26S\Game.dll

Stack Trace (Using DBGHELP.DLL)

6F430C91 Game.dll GameMain+4355137 (0x00000010,0x00000000,0x6F9473BE,0x6F45D1B8)

Loaded Modules

0x00400000 - 0x0047D000 F:\Warcraft III 1.26S\war3.exe
0x15000000 - 0x15061000 F:\Warcraft III 1.26S\Storm.dll
0x21100000 - 0x2115F000 F:\Warcraft III 1.26S\mss32.dll
0x22600000 - 0x22616000 F:\Warcraft III 1.26S\redist\miles\Mssfast.m3d
0x22700000 - 0x22717000 F:\Warcraft III 1.26S\redist\miles\Mssdolby.m3d
0x22C00000 - 0x22C18000 F:\Warcraft III 1.26S\redist\miles\Msseax2.m3d
0x24600000 - 0x24611000 F:\Warcraft III 1.26S\redist\miles\Reverb3.flt
0x26F00000 - 0x26F2A000 F:\Warcraft III 1.26S\redist\miles\Mp3dec.asi
0x55430000 - 0x57E86000 C:\Windows\System32\DriverStore\FileRepository\u0395045.inf_amd64_cb9a543331727801\B394905\amdxn32.dll
0x591A0000 - 0x591BF000 C:\Windows\SYSTEM32\winmmbase.dll
0x595F0000 - 0x595FA000 C:\Windows\SYSTEM32\WINNSI.DLL
0x59600000 - 0x59610000 C:\Windows\SYSTEM32\resourcepolicyclient.dll
0x5B2E0000 - 0x5B309000 C:\Windows\SYSTEM32\dbgcore.DLL
0x5B410000 - 0x5B59A000 C:\Windows\SYSTEM32\AUDIOSES.DLL
0x60000000 - 0x6005D000 F:\Warcraft III 1.26S\ijl15.dll
0x63B80000 - 0x63B89000 C:\Windows\SYSTEM32\msdmo.dll
0x63BE0000 - 0x63BE9000 C:\Windows\SYSTEM32\avrt.dll
0x645A0000 - 0x6461C000 C:\Windows\System32\MMDevApi.dll
0x64620000 - 0x6472A000 C:\Windows\System32\Windows.UI.dll
0x64840000 - 0x64891000 C:\Windows\SYSTEM32\mswsock.dll
0x649B0000 - 0x649D4000 C:\Windows\SYSTEM32\IPHLPAPI.DLL
0x649E0000 - 0x64BB2000 C:\Windows\SYSTEM32\dbghelp.dll
0x65000000 - 0x65025000 C:\Windows\SYSTEM32\SspiCli.dll
0x652B0000 - 0x652D9000 C:\Windows\SYSTEM32\ntmarta.dll
0x66650000 - 0x66674000 C:\Windows\System32\DEVOBJ.dll
0x682A0000 - 0x682C7000 C:\Windows\SYSTEM32\cryptnet.dll
0x682D0000 - 0x682F1000 C:\Windows\SYSTEM32\gpapi.dll
0x68300000 - 0x6830E000 C:\Windows\SYSTEM32\MSASN1.dll
0x69260000 - 0x6932D000 C:\Windows\SYSTEM32\CoreMessaging.dll
0x69330000 - 0x69414000 C:\Windows\SYSTEM32\textinputframework.dll
0x6A2C0000 - 0x6A2FD000 C:\Windows\SYSTEM32\cfgmgr32.dll
0x6A5C0000 - 0x6A5CE000 C:\Windows\SYSTEM32\UMPDC.dll
0x6A5D0000 - 0x6A616000 C:\Windows\SYSTEM32\powrprof.dll
0x6A750000 - 0x6A7EF000 C:\Windows\SYSTEM32\mscms.dll
0x6AF50000 - 0x6AF78000 C:\Windows\SYSTEM32\amdihk32.dll
0x6AF80000 - 0x6B04A000 C:\Windows\SYSTEM32\dxgi.dll
0x6BD60000 - 0x6BDF9000 C:\Windows\SYSTEM32\ResampleDmo.DLL
0x6BE00000 - 0x6BE72000 C:\Windows\SYSTEM32\DSOUND.DLL
0x6BEC0000 - 0x6BEC7000 C:\Windows\SYSTEM32\d3d8thk.dll
0x6BED0000 - 0x6BF88000 C:\Windows\SYSTEM32\d3d8.dll
0x6BF90000 - 0x6BFD2000 C:\Windows\SYSTEM32\GLU32.dll
0x6BFE0000 - 0x6C0C0000 C:\Windows\SYSTEM32\OPENGL32.dll
0x6C0C0000 - 0x6C0C8000 C:\Windows\SYSTEM32\WSOCK32.dll
0x6C0D0000 - 0x6C558000 C:\Windows\SYSTEM32\WININET.dll
0x6C560000 - 0x6C5FB000 C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9680_none_d090cb7c44278b28\MSVCR80.dll
0x6C600000 - 0x6C691000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.22621.608_none_42d541138da2ebd2\COMCTL32.dll
0x6C6A0000 - 0x6C745000 C:\Windows\SYSTEM32\apphelp.dll
0x6DAB0000 - 0x6DAE1000 C:\Windows\SYSTEM32\WINMM.dll
0x6DAF0000 - 0x6DC57000 C:\Windows\System32\DriverStore\FileRepository\u0395045.inf_amd64_cb9a543331727801\B394905\aticfx32.dll
0x6DC60000 - 0x6DC8D000 C:\Windows\SYSTEM32\dxcore.dll
0x6DE10000 - 0x6DE34000 C:\Windows\SYSTEM32\dwmapi.dll
0x6DE60000 - 0x6DF27000 C:\Windows\SYSTEM32\wintypes.dll
0x6DF30000 - 0x6E5FE000 C:\Windows\SYSTEM32\windows.storage.dll
0x6F000000 - 0x6FBB5000 F:\Warcraft III 1.26S\Game.dll
0x71680000 - 0x7169A000 C:\Windows\SYSTEM32\BCrypt.dll
0x716A0000 - 0x716AB000 C:\Windows\SYSTEM32\CRYPTBASE.dll
0x716B0000 - 0x716E0000 C:\Windows\system32\rsaenh.dll
0x716E0000 - 0x716F5000 C:\Windows\SYSTEM32\CRYPTSP.dll
0x72D60000 - 0x72DDF000 C:\Windows\system32\uxtheme.dll
0x74A50000 - 0x74A8F000 C:\Windows\System32\Windows.Internal.Graphics.Display.DisplayColorManagement.dll
0x74A90000 - 0x74A98000 C:\Windows\SYSTEM32\VERSION.dll
0x74AA0000 - 0x74AB3000 C:\Windows\SYSTEM32\kernel.appcore.dll
0x74BC0000 - 0x74C79000 C:\Windows\System32\RPCRT4.dll
0x74C80000 - 0x74D44000 C:\Windows\System32\msvcrt.dll
0x74DF0000 - 0x74ECE000 C:\Windows\System32\gdi32full.dll
0x74F30000 - 0x74FE0000 C:\Windows\System32\comdlg32.dll
0x74FE0000 - 0x750E3000 C:\Windows\System32\CRYPT32.dll
0x750F0000 - 0x75112000 C:\Windows\System32\GDI32.dll
0x75120000 - 0x7555D000 C:\Windows\System32\SETUPAPI.dll
0x75560000 - 0x75620000 C:\Windows\System32\shcore.dll
0x75680000 - 0x75CE2000 C:\Windows\System32\SHELL32.dll
0x75CF0000 - 0x75D72000 C:\Windows\System32\sechost.dll
0x75DA0000 - 0x75E19000 C:\Windows\System32\msvcp_win.dll
0x75F90000 - 0x75FDB000 C:\Windows\System32\SHLWAPI.dll
0x75FE0000 - 0x7603F000 C:\Windows\System32\WS2_32.dll
0x76040000 - 0x76130000 C:\Windows\System32\KERNEL32.DLL
0x76130000 - 0x76192000 C:\Windows\System32\bcryptprimitives.dll
0x761A0000 - 0x7641B000 C:\Windows\System32\combase.dll
0x76420000 - 0x7668A000 C:\Windows\System32\KERNELBASE.dll
0x766F0000 - 0x767CB000 C:\Windows\System32\MSCTF.dll
0x76840000 - 0x76952000 C:\Windows\System32\ucrtbase.dll
0x76960000 - 0x769DC000 C:\Windows\System32\ADVAPI32.dll
0x769F0000 - 0x769F7000 C:\Windows\System32\NSI.dll
0x76A00000 - 0x76A9C000 C:\Windows\System32\OLEAUT32.dll
0x76AA0000 - 0x76BED000 C:\Windows\System32\ole32.dll
0x76BF0000 - 0x76C0A000 C:\Windows\System32\win32u.dll
0x76C10000 - 0x76C92000 C:\Windows\System32\clbcatq.dll
0x76CA0000 - 0x76E47000 C:\Windows\System32\USER32.dll
0x76E50000 - 0x76E75000 C:\Windows\System32\IMM32.dll
0x76E90000 - 0x7703F000 C:\Windows\SYSTEM32\ntdll.dll

Memory Dump

Code: 16 bytes starting at (EIP = 6F430C91)
6F430C91: 8B 75 10 8B 4D 0C 8B D6 E8 92 ED C0 FF 85 C0 0F .u..M...........
Stack: 1024 bytes starting at (ESP = 0019DF18)
  • = addr ** *
0019DF10: E8 DF 19 00 75 91 45 6F 10 00 00 00 E8 DF 19 00 ....u.Eo........
0019DF20: FF FF FF FF 58 BB 3B 6F 10 00 00 00 00 00 00 00 ....X.;o........
0019DF30: BE 73 94 6F B8 D1 45 6F FF FF FF FF A4 D1 45 6F .s.o..Eo......Eo
0019DF40: 9C D1 45 6F 90 E7 49 15 38 29 05 25 08 00 00 00 ..Eo..I.8).%....
0019DF50: B0 DF 19 00 74 76 65 2B 74 76 65 70 88 00 E4 10 ....tve+tvep....
0019DF60: 2B 19 47 6F D4 8E 4E 17 88 00 E4 10 6C 69 62 61 +.Go..N.....liba
0019DF70: BF 18 47 6F F6 AF ED 2D 98 DF 19 00 A0 E0 19 00 ..Go...-........
0019DF80: 34 39 47 25 56 77 38 6F 48 E0 19 00 FF FF FF FF 49G%Vw8oH.......
0019DF90: E0 04 40 19 60 E7 49 15 C7 51 2E 9B 0C 00 00 00 ..@.`.I..Q......
0019DFA0: 60 E7 49 15 97 3C 03 15 28 1E F7 10 60 E7 49 15 .I..<..(....I.
0019DFB0: FF FF FF 7F A0 00 22 11 D8 88 D0 10 F4 CD 44 6F ......".......Do
0019DFC0: 28 1E F7 10 60 E7 49 15 04 00 00 00 8C DF 19 00 (...`.I.........
0019DFD0: 94 90 D0 10 50 04 40 19 04 00 00 00 01 00 00 00 ....P.@.........
0019DFE0: 30 BB 3B 6F 52 92 B6 12 04 00 00 00 AE EF 45 6F 0.;oR.........Eo
0019DFF0: 90 E7 49 15 42 92 B6 12 00 00 00 00 38 29 05 25 ..I.B.......8).%
0019E000: 00 00 00 00 5C 29 05 25 00 00 31 19 00 04 00 00 ....\).%..1.....
0019E010: 01 00 00 00 39 30 30 68 2C 00 00 00 00 00 00 00 ....900h,.......
0019E020: 00 00 00 00 00 00 00 00 48 5D 02 15 90 80 31 19 ........H]....1.
0019E030: 00 00 31 19 68 E0 19 00 D6 B7 45 6F 38 29 05 25 ..1.h.....Eo8).%
0019E040: 70 E0 19 00 93 A0 45 6F F6 AD B6 12 00 00 00 00 p.....Eo........
0019E050: 70 E0 19 00 98 E0 19 00 28 E6 82 6F 00 00 00 00 p.......(..o....
0019E060: 32 E8 45 6F D2 AD B6 12 00 00 00 00 38 29 05 25 2.Eo........8).%
0019E070: 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0019E080: 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 ................
0019E090: BC E1 19 00 A8 E8 82 6F FF FF FF FF 03 FC 45 6F .......o......Eo
0019E0A0: 98 4D F1 19 48 E1 19 00 E0 93 04 00 00 00 00 00 .M..H...........
0019E0B0: 80 00 00 00 38 29 05 25 CC 00 BE 10 C0 00 BE 10 ....8).%........
0019E0C0: D4 B6 44 6F 98 4D F1 19 00 00 00 00 48 E1 19 00 ..Do.M......H...
0019E0D0: E0 93 04 00 00 00 00 00 00 00 00 00 48 E1 19 00 ............H...
0019E0E0: B4 BF 49 25 96 83 3A 6F 00 00 00 00 48 E1 19 00 ..I%..:o....H...
0019E0F0: E0 93 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0019E100: 64 14 93 17 00 00 00 00 FC 10 98 17 C4 A8 3B 6F d.............;o
0019E110: 80 00 00 00 48 E1 19 00 B4 BF 49 25 00 00 00 00 ....H.....I%....
0019E120: 00 00 00 00 64 BF 49 25 55 58 44 6F 48 E1 19 00 ....d.I%UXDoH...
0019E130: B4 BF 49 25 00 00 00 00 00 00 00 00 64 BF 49 25 ..I%........d.I%
0019E140: B4 BF 49 25 64 BF 49 25 00 00 00 00 F6 73 44 6F ..I%d.I%.....sDo
0019E150: B4 BF 49 25 00 00 00 00 64 BF 49 25 64 BF 49 25 ..I%....d.I%d.I%
0019E160: C0 15 AD 22 88 BF 49 25 00 00 00 00 C0 15 AD 22 ..."..I%......."
0019E170: 88 BF 49 25 64 BF 49 25 3F 40 B6 DA 33 50 44 6F ..I%d.I%?@..3PDo
0019E180: 72 50 44 6F 00 00 00 00 64 BF 49 25 88 BF 49 25 rPDo....d.I%..I%
0019E190: C0 15 AD 22 82 7F 44 6F 26 AC B6 12 FF FF FF FF ..."..Do&.......
0019E1A0: 38 32 97 17 CC DF 61 17 88 00 E4 10 FC 31 97 17 82....a......1..
0019E1B0: CC DF 61 17 88 00 E4 10 64 BF 49 25 1C E2 19 00 ..a.....d.I%....
0019E1C0: 51 DE 82 6F FF FF FF FF 64 82 44 6F 38 32 97 17 Q..o....d.Do82..
0019E1D0: C3 CD 68 E8 00 00 00 00 66 AC B6 12 FC 31 97 17 ..h.....f....1..
0019E1E0: FC 31 97 17 64 FE 4D 25 64 BF 49 25 78 65 74 2B .1..d.M%d.I%xet+
0019E1F0: 6C 67 61 2B 78 65 74 2B 00 00 00 00 9C E2 57 17 lga+xet+......W.
0019E200: 0C 72 AB 6F 00 00 00 00 00 00 00 00 00 00 00 00 .r.o............
0019E210: 00 00 00 00 FF FF FF FF FF FF FF FF 88 E2 19 00 ................
0019E220: A8 DE 82 6F 00 00 00 00 CB 82 44 6F 00 00 00 00 ...o......Do....
0019E230: B4 27 5E 17 36 84 44 6F 74 A3 5F 21 74 A3 5F 21 .'^.6.Dot._!t._!
0019E240: E4 20 B9 22 80 F1 0B 22 FD A6 62 6F 90 00 A8 00 . ."..."..bo....
0019E250: EE AF B6 12 64 FE 4D 25 CC DF 61 17 90 00 A8 00 ....d.M%..a.....
0019E260: CC DF 61 17 00 00 00 00 02 00 00 00 80 F1 0B 22 ..a............"
0019E270: 78 E2 19 00 74 A3 5F 21 74 A3 5F 21 00 00 00 00 x...t._!t._!....
0019E280: 00 00 00 00 50 00 00 00 1C E3 19 00 88 0A 84 6F ....P..........o
0019E290: 00 00 00 00 D0 A7 62 6F 11 03 08 00 90 00 A8 00 ......bo........
0019E2A0: 64 FE 4D 25 84 FE 94 6F A1 9A 62 6F 11 03 08 00 d.M%...o..bo....
0019E2B0: 90 00 A8 00 0C 56 5E 17 FD 71 43 6F 90 00 A8 00 .....V^..qCo....
0019E2C0: 30 22 C6 14 64 A3 5F 21 64 A3 5F 21 54 0D C5 14 0"..d._!d._!T...
0019E2D0: B4 27 5E 17 01 00 00 00 04 2E 5E 2B FD A6 62 6F .'^.......^+..bo
0019E2E0: 90 00 A8 00 52 AF B6 12 B4 27 5E 17 0C 56 5E 17 ....R....'^..V^.
0019E2F0: 64 FE 4D 25 0C 56 5E 17 01 00 00 00 14 00 00 00 d.M%.V^.........
0019E300: 30 22 C6 14 34 A0 5F 21 54 83 5F 21 54 83 5F 21 0"..4._!T._!T._!
0019E310: BF 18 47 6F 00 00 00 00 38 E3 19 00 70 E3 19 00 ..Go....8...p...

Инструкция по адресу 0x6F430C91 попыталась прочесть память по адресу 0x00000020, но так как там ничего не было — она крашнулась.
Этот код расположен в пределах game.dll (0x6F000000 - 0x6FBB5000 F:\Warcraft III 1.26S\Game.dll), что видно в разделе Loaded Modules. Учтите, что пусть эта библиотека и предпочитает распологаться по адресу 0x6F000000, но операционная система может загрузить её куда либо еще и тогда, с теми же смещениями, абсолютные адреса будут отличаться. К примеру, если библиотека будет по адресу 0x24F00000, то вместо 0x6F430C91 вы увидите 0x25330C91 (0x24F00000 + 0x430C91).
По смещению 0x430C91 находится код функции CGameState::GetAgentHandle, которая принимает указатель на агент и возвращает его хэндл.
В дампе памяти стека видны значения трёх сохраненных регистров (0x00000010 0x0019DFE8 0xFFFFFFFF), а также адрес возврата 0x6F3BBB58 и полученные аргументы: agent=0x00000010, auto_free=0x00000000. Кто-то передал кривой указатель 0x10, который ссылается на нечитаемую память.
Адрес возврата ведет к нативке Player. В стеке можно увидеть сохраненное ею значение регистра (0x6F9473BE), адрес возврата к коду виртуальной машины (0x6F45D1B8) и полученный ею аргумент (number=0xFFFFFFFF), который в виде знакового целого равняется числу -1.
Вывод: кто-то вызвал нативку Player с параметром -1, что и привело к крашу.
Найти конкретного виновника поможет программа, ссылку на которую я скинул выше.
Начало дампа стека
Обратите внимание, что дамп стека выровнен по границе 16 байт, так что, на самом деле вершина стека находится не по адресу 0x0019DF10, а как написано ниже — 0x0019DF18, так что, в данном случае, первые 8 байт можно пропустить (зачеркнуты).
Синим выделены сохраненные значения регистров, зеленым — адреса возврата, а красным — кривые параметры, приведшие к крашу.
Stack: 1024 bytes starting at (ESP = 0019DF18)
= addr ** *
0019DF10: E8 DF 19 00 75 91 45 6F 10 00 00 00 E8 DF 19 00 ....u.Eo........
0019DF20: FF FF FF FF 58 BB 3B 6F 10 00 00 00 00 00 00 00 ....X.;o........
0019DF30: BE 73 94 6F B8 D1 45 6F FF FF FF FF A4 D1 45 6F .s.o..Eo......Eo
начало метода CGameState::GetAgentHandle
.text:6F430C80 ; int __thiscall CGameState::GetAgentHandle(CGameState *this, CAgent *agent, BOOL AutoFree)
.text:6F430C80 CGameState__GetAgentHandle proc near    ; CODE XREF: CUnit__PostEvent+8F↑p
.text:6F430C80                                         ; CUnit__NotifyAboutInstantOrder+195↑p ...
.text:6F430C80
.text:6F430C80 agent           = dword ptr  4
.text:6F430C80 AutoFree        = dword ptr  8
.text:6F430C80
.text:6F430C80                 push    ebx
.text:6F430C81                 push    ebp
.text:6F430C82                 mov     ebp, [esp+8+agent]
.text:6F430C86                 test    ebp, ebp
.text:6F430C88                 push    esi
.text:6F430C89                 mov     ebx, ecx
.text:6F430C8B                 jz      loc_6F430D9B
.text:6F430C91                 mov     esi, [ebp+10h]
нативка Player
.text:6F3BBB30 ; DWORD __cdecl Jass::Common::Player(int number)
.text:6F3BBB30 Jass__Common__Player proc near          ; DATA XREF: InitJass+3007↓o
.text:6F3BBB30
.text:6F3BBB30 number          = dword ptr  4
.text:6F3BBB30
.text:6F3BBB30                 mov     eax, [esp+number]
.text:6F3BBB34                 mov     ecx, CGameWar3__Instance
.text:6F3BBB3A                 push    esi
.text:6F3BBB3B                 push    eax
.text:6F3BBB3C                 call    CGameWar3__GetPlayer
.text:6F3BBB41                 mov     ecx, CGameWar3__Instance
.text:6F3BBB47                 mov     esi, eax
.text:6F3BBB49                 call    CGameWar3__GetGameState
.text:6F3BBB4E                 push    0
.text:6F3BBB50                 push    esi
.text:6F3BBB51                 mov     ecx, eax
.text:6F3BBB53                 call    CGameState__GetAgentHandle
.text:6F3BBB58                 pop     esi
.text:6F3BBB59                 retn
.text:6F3BBB59 Jass__Common__Player endp
`
ОЖИДАНИЕ РЕКЛАМЫ...
19
Если мне интересно, почему карта крашнулась, то я обычно запускаю эту программу, пускай она и не всегда работает (но в таком случае я могу покопаться в памяти игры отладчиком, так что лень исправлять).
По твоему краш-репорту видно, что произошел вызов нативки Player с параметром -1, который и привел к ожидаемому крашу.
33
IceFog, для меня всегда чтение краш-репортов было какой-то магией, а можно узнать всё таки в какой строчке, в какой файле и как именно вы узнали что вызвалась нативка Player с параметром -1?
19
Инструкция по адресу 0x6F430C91 попыталась прочесть память по адресу 0x00000020, но так как там ничего не было — она крашнулась.
Этот код расположен в пределах game.dll (0x6F000000 - 0x6FBB5000 F:\Warcraft III 1.26S\Game.dll), что видно в разделе Loaded Modules. Учтите, что пусть эта библиотека и предпочитает распологаться по адресу 0x6F000000, но операционная система может загрузить её куда либо еще и тогда, с теми же смещениями, абсолютные адреса будут отличаться. К примеру, если библиотека будет по адресу 0x24F00000, то вместо 0x6F430C91 вы увидите 0x25330C91 (0x24F00000 + 0x430C91).
По смещению 0x430C91 находится код функции CGameState::GetAgentHandle, которая принимает указатель на агент и возвращает его хэндл.
В дампе памяти стека видны значения трёх сохраненных регистров (0x00000010 0x0019DFE8 0xFFFFFFFF), а также адрес возврата 0x6F3BBB58 и полученные аргументы: agent=0x00000010, auto_free=0x00000000. Кто-то передал кривой указатель 0x10, который ссылается на нечитаемую память.
Адрес возврата ведет к нативке Player. В стеке можно увидеть сохраненное ею значение регистра (0x6F9473BE), адрес возврата к коду виртуальной машины (0x6F45D1B8) и полученный ею аргумент (number=0xFFFFFFFF), который в виде знакового целого равняется числу -1.
Вывод: кто-то вызвал нативку Player с параметром -1, что и привело к крашу.
Найти конкретного виновника поможет программа, ссылку на которую я скинул выше.
Начало дампа стека
Обратите внимание, что дамп стека выровнен по границе 16 байт, так что, на самом деле вершина стека находится не по адресу 0x0019DF10, а как написано ниже — 0x0019DF18, так что, в данном случае, первые 8 байт можно пропустить (зачеркнуты).
Синим выделены сохраненные значения регистров, зеленым — адреса возврата, а красным — кривые параметры, приведшие к крашу.
Stack: 1024 bytes starting at (ESP = 0019DF18)
= addr ** *
0019DF10: E8 DF 19 00 75 91 45 6F 10 00 00 00 E8 DF 19 00 ....u.Eo........
0019DF20: FF FF FF FF 58 BB 3B 6F 10 00 00 00 00 00 00 00 ....X.;o........
0019DF30: BE 73 94 6F B8 D1 45 6F FF FF FF FF A4 D1 45 6F .s.o..Eo......Eo
начало метода CGameState::GetAgentHandle
.text:6F430C80 ; int __thiscall CGameState::GetAgentHandle(CGameState *this, CAgent *agent, BOOL AutoFree)
.text:6F430C80 CGameState__GetAgentHandle proc near    ; CODE XREF: CUnit__PostEvent+8F↑p
.text:6F430C80                                         ; CUnit__NotifyAboutInstantOrder+195↑p ...
.text:6F430C80
.text:6F430C80 agent           = dword ptr  4
.text:6F430C80 AutoFree        = dword ptr  8
.text:6F430C80
.text:6F430C80                 push    ebx
.text:6F430C81                 push    ebp
.text:6F430C82                 mov     ebp, [esp+8+agent]
.text:6F430C86                 test    ebp, ebp
.text:6F430C88                 push    esi
.text:6F430C89                 mov     ebx, ecx
.text:6F430C8B                 jz      loc_6F430D9B
.text:6F430C91                 mov     esi, [ebp+10h]
нативка Player
.text:6F3BBB30 ; DWORD __cdecl Jass::Common::Player(int number)
.text:6F3BBB30 Jass__Common__Player proc near          ; DATA XREF: InitJass+3007↓o
.text:6F3BBB30
.text:6F3BBB30 number          = dword ptr  4
.text:6F3BBB30
.text:6F3BBB30                 mov     eax, [esp+number]
.text:6F3BBB34                 mov     ecx, CGameWar3__Instance
.text:6F3BBB3A                 push    esi
.text:6F3BBB3B                 push    eax
.text:6F3BBB3C                 call    CGameWar3__GetPlayer
.text:6F3BBB41                 mov     ecx, CGameWar3__Instance
.text:6F3BBB47                 mov     esi, eax
.text:6F3BBB49                 call    CGameWar3__GetGameState
.text:6F3BBB4E                 push    0
.text:6F3BBB50                 push    esi
.text:6F3BBB51                 mov     ecx, eax
.text:6F3BBB53                 call    CGameState__GetAgentHandle
.text:6F3BBB58                 pop     esi
.text:6F3BBB59                 retn
.text:6F3BBB59 Jass__Common__Player endp
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.