РАССМОТРЕНО Скриншоты // Утечка памяти

Тема в разделе "Проблемы с игрой", создана пользователем Tim4ukys, 12 мар 2022.

Статус темы:
Закрыта.
  1. Tim4ukys

    Tim4ukys Новичок

    Сообщения:
    40
    Симпатии:
    13
    Баллы:
    8
    Род занятий:
    Reverse SA-MP | C/C++ developer
    Сайт:
    Ник:
    Antonina_Sobol
    Сервер:
    06
    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
     
  2. Tim4ukys

    Tim4ukys Новичок

    Сообщения:
    40
    Симпатии:
    13
    Баллы:
    8
    Род занятий:
    Reverse SA-MP | C/C++ developer
    Сайт:
    Ник:
    Antonina_Sobol
    Сервер:
    06
    Три часа провозился и всё-таки сумел сам пофиксить.
    Видео:

    Код: https://github.com/Tim4ukys/patchGTARPClient/pull/8/commits/a47f5df5dce532984e96a68c37fe5fdae0f08474
    Разрешаю разработчикам GTA RP использовать код представленный выше.

    Я вам фикс это бага на блюдце с голубой каёмочкой преподнёс, так что давайте=)
     
    XoM(-(-_(-_-)_-)-)YaK нравится это.
  3. Koenigsberg Federal

    Koenigsberg Federal Новичок

    Сообщения:
    57
    Симпатии:
    10
    Баллы:
    8
    Род занятий:
    Наука и спорт
    Ник:
    Koenigsberg_Federal
    Сервер:
    01
    )
     
  4. Elvin Fedorof

    Elvin Fedorof Админ 3 lvl

    Сообщения:
    803
    Симпатии:
    102
    Баллы:
    43
    Ник:
    Elvin_Fedorof
    Сервер:
    03
    Проблему сами решили. По поводу бага можете отписать в данную тему - https://forum.gtarp.ru/threads/gta-rp-bagi-servera.1605/
     
  5. Stasik Montana

    Stasik Montana Руководитель проекта

    Сообщения:
    37.191
    Симпатии:
    11.109
    Баллы:
    113
    Сайт:
    Ник:
    Stasik_Montana
    Передано разработчику
     
Статус темы:
Закрыта.

Поделиться этой страницей