1. Ваш ник: Antonina_Sobol 2. Номер сервера: 01 Какой смысл, когда открыт только один сервер?? 3. Описание проблемы: Спойлер: Объясняю, в чём утечка При создании скриншота создаётся "IDirect3DSurface9" с пулом "D3DPOOL_SCRATCH". (см скриншот) Переходим на MSDN и видим: 1) Он будет хранится в оперативной памяти. 2) В случае, когда девайс уйдёт на покой(reset event) он не будет пересоздаваться. Окей, круто, НО. В конце тела функции созданный буфер ничем не выгружается(см в скриншоте). Т.е мы заняли память, которая будет занимать кусок памяти(При 1080p жрать будет (1080 * 1920 * 4(размер при формате D3DFMT_A8R8G8B8) = 7,91 мб вроде бы, но я боюсь ошибиться в расчётах)) и тупа висеть мёртвым грузом. Чтобы проверить, не выгружается ли память каким-то макаром, я пытался воссоздать эту ситуацию в своём приложении и довы*бывался до того, что у меня тупа крашнулась система.(кусок дерьма кода из программы - https://gist.github.com/Tim4ukys/71e050d49617b9f75b5dae479e77456d). Баг действительно становиться опасным, если RAM мало. Сама функция обитает в samp.dll + 0x74EB0. Фикситься легко через тот же callhook. Можно убить двух зайцев, и исправляя этот баг, через multithreading убрать зависание при создании скриншота и получить +rep от аудитории(именно так я и нашёл этот багxDD. Хотел в свой патч добавить фикс зависания). 4. Время и дата: 20:20 12.03.2022 5. Доказательства (видео/скриншот): https://yapx.ru/u/RHf5A Пруф, что не пофикшен - https://yapx.ru/u/RHoEc
Три часа провозился и всё-таки сумел сам пофиксить. Видео: Код: https://github.com/Tim4ukys/patchGTARPClient/pull/8/commits/a47f5df5dce532984e96a68c37fe5fdae0f08474 Разрешаю разработчикам GTA RP использовать код представленный выше. Я вам фикс это бага на блюдце с голубой каёмочкой преподнёс, так что давайте=)
Проблему сами решили. По поводу бага можете отписать в данную тему - https://forum.gtarp.ru/threads/gta-rp-bagi-servera.1605/