Current time: 10.12.2025, 07:52 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Ошибки, баги и недочёты WoG 3.58f
» Собираем в эту тему всевозможные ошибки игры
Author Message
daemon_n Offline
Administrators

Posts: 4393
Post: #766

XEPOMAHT, появилась же настройка в ini файле, которая отключаем сообщение с логом. Я в сборке отменил показ сообщения и сделал запуск стороннего сообщения, которое позволяет отправить отчёт сразу на GitHub


Image: widget.png?style=banner2

Новейший Heroes Launcher
04.12.2025 00:06
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2498
Post: #767

(04.12.2025 00:06)daemon_n Wrote:  появилась же настройка в ini файле, которая отключаем сообщение с логом.

И какая из них? По-умолчанию там всё выключено:

Code:
[Era]
CpuTargetLevel=50
Debug=0
Debug.AbortOnError=0
Debug.DumpSavegameSections=0
Debug.DumpVirtualFileSystem=0
Debug.Everything=0
Debug.LogDestination=File
Debug.LogVirtualFileSystem=0
Debug.TrackErm=0
Debug.TrackErm.DumpCommands=0
Debug.TrackErm.IgnoreEmptyTriggers=0
Debug.TrackErm.IgnoreRealTimeTimers=0
Debug.TrackErm.MaxRecords=10000
ErmLegacySupport=0
04.12.2025 00:49
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16817
Post: #768

Debug.CaptureScreenshotOnCrash=1
Debug.ExternalCrashHandlerPath=
Debug.ShowMessageOnCrash=1


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
04.12.2025 02:28
Find all posts by this user Quote this message in a reply
Lorrein Offline

Posts: 8
Post: #769

Папка Era
exeption context
Code:
Unknown exception.
EIP: Kernelbase.165004. Code: E06D7363

> Registers
EAX: 02D36848 (int: 47409224, pint: 0xE06D7363, str: "csmа\x01")
ECX: 00000003 (int: 3)
EDX: 00000000 (int: 0)
EBX: 02D36BA8 (int: 47410088, pint: 0x00000002)
ESP: 02D36848 (int: 47409224, pint: 0xE06D7363, str: "csmа\x01")
EBP: 02D368A0 (int: 47409312, pint: 0x02D368E0 = 47409376)
ESI: H3era hd.00645D80 (int: 6577536, pint: 0xFFFFFFFF, str: "яяяя\x00")
EDI: 02D368E0 (int: 47409376, pint: 0x02D36930 = 47409456)

> Callstack
H3era hd.00617B3B
H3era hd.0060B154
H3era hd.00485927
H3era hd.004D7D17
H3era hd.004BD0BD
H3era hd.004BF1EC
Era.128B6 (PatchApi.CALL_THIS + 62 in PatchApi.pas on line 836)
Era.12979 (PatchApi.Call + 85 in PatchApi.pas on line 894 offset 14)
Era.7CAD9 (Triggers.Hook_LoadSavegame + 137 in Triggers.pas on line 711 offset 55)
H3era hd.0058C62E
H3era hd.0058C538
0569DC76
0569DC03
H3era hd.005869D6
Xxl.1625
H3era hd.0058847D
Xxl.1122
0569E93F
056A6B1F
056A77F1
056AAC21
H3era hd.005FFACB
H3era hd.00584F0C
056A7665
0568BB25
0568BAAD
056A7468
0A0A84AF
_hd3_.178AD
05680108
Kernel32.15D49
Ntdll.6D6DB
Ntdll.6D661

> Stack
02D36834: 00000000 (int: 0)
02D36838: 00000000 (int: 0)
02D3683C: 00000000 (int: 0)
02D36840: Kernelbase.165004 (int: 1988710404, pint: 0x54244C8B = 1411665035)
02D36844: 02D36848 (int: 47409224, pint: 0xE06D7363, str: "csmа\x01")
02D36848*: E06D7363 (int: -529697949)
02D3684C: 00000001 (int: 1)
02D36850: 00000000 (int: 0)
02D36854: Kernelbase.165004 (int: 1988710404, pint: 0x54244C8B = 1411665035)
02D36858: 00000003 (int: 3)
02D3685C: 19930520 (int: 429065504, pint: 0xF8D9E7F7, str: "чзЩшщулРРФРРя\x1F")
02D36860: 02D368F4 (int: 47409396, pint: 0x006455AC = 6575532)
02D36864: H3era hd.0065A180 (int: 6660480, pint: 0x00000000)
02D36868: Era.307A (System.@GetMem + 10 in EventLib.pas on line 22 offset 8314) (int: 101134458, pint: 0x0274C085 = 41205893)
02D3686C: Era.74C45 (Memory.NewMemAlloc + 29 in Memory.pas on line 257) (int: 101600325, pint: 0x5B5EC68B = 1532937867)
02D36870: 02D368F4 (int: 47409396, pint: 0x006455AC = 6575532)
02D36874: 02D368F4 (int: 47409396, pint: 0x006455AC = 6575532)
02D36878: 02D368E4 (int: 47409380, pint: 0x0060B154 = 6336852)
02D3687C: 02D368F4 (int: 47409396, pint: 0x006455AC = 6575532)
02D36880: 05680073 (int: 90701939, pint: 0x648B6158 = 1686856024)
02D36884: 02FD6718 (int: 50161432, pint: 0x79663898 = 2036742296)
02D36888: 02D368D0 (int: 47409360, pint: 0x00000003)
02D3688C: 02D368F4 (int: 47409396, pint: 0x006455AC = 6575532)
02D36890: 02D368E4 (int: 47409380, pint: 0x0060B154 = 6336852)
02D36894: 02D368A8 (int: 47409320, pint: 0xE06D7363, str: "csmа\x01")
02D36898: 02D368F4 (int: 47409396, pint: 0x006455AC = 6575532)
02D3689C: E178FEC3 (int: -512164157)
02D368A0: 02D368E0 (int: 47409376, pint: 0x02D36930 = 47409456)
02D368A4: H3era hd.00617B3B (int: 6388539, pint: 0xC2C95E5F)
02D368A8: E06D7363 (int: -529697949)
02D368AC: 00000001 (int: 1)
02D368B0: 00000003 (int: 3)
02D368B4: 02D368D4 (int: 47409364, pint: 0x19930520 = 429065504)
02D368B8: 02D37594 (int: 47412628, pint: 0x0063DAC0 = 6544064)
02D368BC: H3era hd.006455B8 (int: 6575544, pint: 0x69727473 = 1769108595, str: "string too long\x00")
02D368C0: E06D7363 (int: -529697949)
02D368C4: 00000001 (int: 1)
02D368C8: 00000000 (int: 0)
02D368CC: 00000000 (int: 0)
02D368D0: 00000003 (int: 3)
04.12.2025 13:34
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2498
Post: #770

(04.12.2025 13:34)Lorrein Wrote:  exeption context

Похоже, что у какого-то героя в игре сохранённая кастомная биография превышает лимит строки в 512 символов, в итоге игра не может создать такую длинную переменную и падает. Либо игра пытается прочитать биографию у героя, у которого на самом деле её нет. Либо игра пытается читать героев, которых на самом деле в сохранении нет (к примеру, ERA+ старый содовский формат сохранений не поддерживает).
04.12.2025 18:39
Find all posts by this user Quote this message in a reply
Lorrein Offline

Posts: 8
Post: #771

(04.12.2025 18:39)XEPOMAHT Wrote:  Похоже, что у какого-то героя в игре сохранённая кастомная биография превышает лимит строки в 512 символов, в итоге игра не может создать такую длинную переменную и падает. Либо игра пытается прочитать биографию у героя, у которого на самом деле её нет. Либо игра пстается читать героев, которых на самом деле в сохранении нет (к примеру, ERA+ старый содовский формат сохранений не поддерживает).

может ли быть проблема в героях кампании(у меня включена опция чтоб они появлялись в тавернах)? И если да, могу ли я им ктото биографию сократить?
(This post was last modified: 04.12.2025 19:29 by Lorrein.)
04.12.2025 19:28
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2498
Post: #772

(04.12.2025 19:28)Lorrein Wrote:  может ли быть проблема в героях кампании(у меня включена опция чтоб они появлялись в тавернах)? И если да, могу ли я им ктото биографию сократить?

нет, если биографии стандартные, то разницы никакой нет. А если модами устанавливаются новые и при этом игра не может корректно записать их в сохранение (т.е. к примеру, строка под биографию создана Дельфой или ERM-ом, а игра использует СИ-шный формат строковой переменной, несовместимый с остальными, то начнутся утечки памяти - игра не сможет копировать строку перед записью в сейв, да и просто выгрузить биографию из памяти тоже не сможет), то и прочитать подобную биографию без вылета так же не получится при переполнении 512 байт.
04.12.2025 21:38
Find all posts by this user Quote this message in a reply
Lorrein Offline

Posts: 8
Post: #773

Затестил еще пару штук -
Сохранение стандартного шаблона формата XXL с героем кампании на размере G - загрузилось
А конкретно мой шаблон - сохранки не работают от слова совсем... хотя по параметрам запуска обе карты настраивал одинаково ... скорее всего проблема в шаблоне видимо ... куда мле лучше обратится по поводу приколов с шаблонами?
04.12.2025 22:15
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4393
Post: #774

настало время обернуть sprintf ф-цией sprintf_s


Image: widget.png?style=banner2

Новейший Heroes Launcher
04.12.2025 22:16
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16817
Post: #775

daemon_n, вызываю пояснительную пригаду!


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.12.2025 03:12
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4393
Post: #776

Berserker, в игре при работе с текстом (в данном случае с h3_TextBuffer at 0x00697428) используется ф-ция "sprintf", которая не проверяет размер этого буфера, что позволяет туда залить текст сверх лимита.
Ниже код из IDA (at 0x06179DE)
Code:
int sprintf(char *str, const char *format, ...)


ф-ция "sprintf_s" принимает вторым аргументом размер буфера, передаваемого первым аргументом (код с сайта Microsoft):
Code:
int sprintf_s(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format,
   ...
)

тупое, (вряд ли производительное), но рабочее решение:
обернуть "sprintf" и проверять адрес буфера. Если это h3_TextBuffer (buffer == 0x697428), то вызываем "sprintf_s". Хотя точно не уверен, можно ли VA спокойно обернуть.

Ну или ещё тупее:
просто заменить на "sprintf_s", но это может ограничить максимальную длину текста в некоторых полях и внешних вызовах с собственным буфером, что есть оооооооочень плохо.


Image: widget.png?style=banner2

Новейший Heroes Launcher
05.12.2025 12:23
Visit this user's website Find all posts by this user Quote this message in a reply
Lorrein Offline

Posts: 8
Post: #777

Все, нашел проблему - я упирался в предел в 256 шахт на карту, генератор шаблона мог генерить больше чем 256 шахт, но сохранения видимо не поддерживают больше чем 256 шахт всех типов
(This post was last modified: 05.12.2025 18:11 by Lorrein.)
05.12.2025 18:11
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16817
Post: #778

daemon_n, а, точно, классический выход за границы буфера. Да, универсального решения нет, но геройскую функцию можно перехватить, если h3_TextBuffer используется в подавляющем числе случаев.

Lorrein, да, 0..255 влезает в 1 байт, выше уже нет.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.12.2025 01:16
Find all posts by this user Quote this message in a reply
Lorrein Offline

Posts: 8
Post: #779

(06.12.2025 01:16)Berserker Wrote:  Lorrein, да, 0..255 влезает в 1 байт, выше уже нет.

Да я почему то думал что оно каждый тип шахты по отдельности считает ... ну да ладно, разобрался и черт с ним

upd. спасибо кстати за подсказку, XEPOMAHT, по факту начал искать в чем оверкап после вашей подсказки
(This post was last modified: 06.12.2025 14:14 by Lorrein.)
06.12.2025 03:40
Find all posts by this user Quote this message in a reply
n0body Offline

Posts: 5
Post: #780

Не запускается era (да и вообще ни один мод), видимо у меня та же беда что и у nazartyagun. Что имеется из диагностики:
  • Система Windows 11 Pro, 24H2, build 26100.7171
  • Ошибок нет (втч в event viewer винды)
  • Антивирус только стандартный виндовый, он никакие dll не сожрал (сказал бы), да и отключение не помогает
  • DEP отключен
  • Запуск от админа и различные совместимости не помогают
  • Юзер, путь к игре и тп не содержат кириллицы
При всем при этом обычные герои (heroes3.exe и HD) вполне себе отлично запускаются и работают.
Что интересно, пытался давеча в maw мод старенькой mm6 поиграть - но та же самая беда, разрабы, увы, помочь не смогли; хотя возможно это просто совпадение.
(This post was last modified: 07.12.2025 22:55 by n0body.)
07.12.2025 22:54
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2025 MyBB Group