Исправление вылетов (рассинхронизация потоков) у SKSE плагинов (HDT)
Это довольно простое решение казалось бы безвыходной ситуации с вылетами у HDT плагина. На первый взгляд вылеты у HDT плагина происходят совершенно случайно и спонтанно и это действительно так. Вы не могли отследить причину, как собственно и я. Проблема этого плагина заключается в постоянном спаме в память, так собственно и работают 90% всех плагинов, но даже не сам спам, а то, что в это время плагин зачем-то постоянно пишет данные в лог. Не нужно быть IT специалистом чтобы знать, что команды ввода-вывода на запись-чтение являются просто катастрофически медленными по сравнению с обменом данными процессор-память или ядра-кеш, и SATA3 или M2 ничем совершенно тут не помогут. Дело в том, что когда плагин решает записать новую строку, потому-что он обнаружил нового NPC, на которого решил повесить поддержку физики и решил сообщить об этом всем на свете, он посылает соответствующие команды ОС. И тут начинается праздник. Все знают о невероятной скорости интерфейсов типа SATA3, M2 и пр. Но мало кто догадывается сколько времени уходит на старт записи, на инициализацию: создания потоков, выделение памяти под операцию, опрос готовности железа, кучу обращений через подсистемы, драйвера и пр. прежде чем запись начнется. Специалисты поправят если что. А в этот момент плагину нужно работать и игре тоже нужно работать, а скорости функций там просто космические по сравнению с этим. Но идет не просто создание нового файла с одной строкой, а добавление строки к существующему, а это затягивает (в сравнении с наносекундами) операцию в разы, т.к. системе нужно считать старый файл и добавить строки и произвести записать. Собственно тут и происходит вылет судя по всему. Некая рассинхронизация в потоках происходит, что-то начинается или заканчивается раньше или позже, не дождавшись чего-то. Я не такой специалист в этом.
Решение: запретить плагинам писать логи. У одной части плагинов есть спец настройки ini файлов для отключения этих функций, некоторые плагины вовсе не пишут логи, но у части плагинов такая функция жестко прописана в коде и отключение не поддерживается. Поэтому пришлось лезть в IDA Pro и напрямую отключать сами функции логирования.
Обратите внимание, что nioverride.dll здесь версии 3.4.4 с фиксом вылета при загрузке локаций с обезглавленными телами. Версия 3.4.5 была вообще убрана с официальной страницы после моего сообщения о наличие вылета там при смене снаряжения (его исправление не представлялось возможным). По сути это еще один фикс CTD, не представленный больше нигде.
Опции для плагинов которые имеют переключатель в их ini файлах:
chargen - iLogLevel=-1
crashfixplugin - LogMessageToFile=0
nioverride - iLogLevel=-1 (этот плагин есть в наборе, но в нем не отключался лог)
Обратите внимание так же на эти исправления: раз, два,
Требования:
Вы должны удалить hdtskyrimmempatch, если он у вас есть и у вас установлен ENB и есть расширение памяти SKSE\SSME\OSA. Почему?
Скачайте основной архив и выберите нужные плагины для замены в папке Директория игры\Data\SKSE\Plugins, предварительно создав резервные копии старых.
Удаление:
Восстановить свои резервные копии или скачать оригинальные версии.
Требования:
Skyrim LE
SKSE плагины





К сожалению не работает. Игра не загружается вовсе. Загружаю через МО (запускаю SKSE файл). Проблему решил. Все установилось.и SafetyLoad нужен или не нужен где то читал что не нужен ,