Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: В чём секрет вылета Pos+cnt<=Size
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
aka_sektor
Кто сталкивался, разобрались в чём причина и как решили?

p.s. ипать он древний, аж в билде 1475 от 15 июля 2003 года был: https://stalker-ru.gamepedia.com/Обсуждение_категории:Сборки
Modera
Даже не пытайся его решить. Вылет происходит из за того что из космоса прилетает горячая частица и портит данные в оперативной памяти твоего ПК, особенно часто это происходит при запуске билдов.
aka_sektor
Цитата(Modera @ 04.04.2019, 20:30) *
из космоса прилетает горячая частица



Была мысля, что Pos+cnt<=Size это тоже самое что (Pos<=Size) && (Pos>=0)
atanda
Движок пытался дочитать файл, но текущая позиция чтения(Pos) и количество байт, которое предстоит прочитать(cnt) больше размера самого файла.
Случается при рассинхронизации чтения-записи(где-то записали меньше, а читают больше). Емнип, в релизе очень часто встречается, если объём нет-пакета превышен(8кб емнип) или опять таки рассинхронизация.
aka_sektor
Цитата(buffy @ 04.04.2019, 20:55) *
объём нет-пакета превышен(8кб емнип) или опять таки рассинхронизация

Речь про сетевой режим или что-то со скриптами?

Вот примеры, кто ловил вылет:
https://www.amk-team.ru/forum/topic/13485-m...;comment=981204
https://ap-pro.ru/forum/106-9910-686387-16-1411139640

Интересен второй случай, чел пишет:
"Изменял в одной модели оружия путь к текстурам... Изменил, сохранил, конвертирую в OGF и вылет..."

А перед этим у него был вылет (Pos<=Size) && (Pos>=0). Типа он нажал "продолжить", и случился Pos+cnt<=Size:
"Перевёл её в object с помощью конвертора Бардака и когда указывал путь к текстурам получил вылет"
"Нажал "Продолжить" и получил вылет, который указан в сообщении выше..."
atanda
Цитата(aka_sektor @ 04.04.2019, 21:03) *
про сетевой режим или что-то со скриптами

Движок использует клиент-серверную модель, так что да - со скриптами.

Конкретнее сказать ничего не могу.
Может это уникальный случай. В стк вообще много уникальных случаев.
aka_sektor
Насчёт кстати (Pos<=Size) && (Pos>=0), расписывал сегодня:

Недавно услышал мнение, что он происходит отнюдь не потому, что текстуры неправильно распределены по папкам. Когда имея имя начинающееся с wpn_, хранятся НЕ в папке textures/wpn

И не потому, что превышен лимит .thm файлов (в логе пишет: count of .thm files=6326) в папке SDK gamedata\textures

Проверено, что удаление .thm файлов не поможет устранить этот вылет, как и раскладывание текстур в папки по префиксам.

Причина вылета, якобы в том, что у какой-то .dds текстуры отсутствует .thm файл. Например, если она была сохранена сразу из графического редактора в формат .dds, и положена в папку editors/gamedata/textures

Либо отсутствуют закрепленные за .thm файлом, детальные текстуры и бампы.

Избежать этого вылета можно, только если всегда импортировать текстуры из формата .tga через SDK

А вот обнаружить быстро, наверное не выйдет, действовать придется методом исключения, удаляя файл текстур за файлом, пока вылет не пропадёт.

Впрочем, допускаю, что возможно, в логе, перед надписью FATAL ERROR пишет, какая текстура грузилась последней. Возможно дело в ней.


UPD:
А ещё писалил тут такое: https://www.amk-team.ru/forum/topic/1560-so...comment=1041853
Цитата
такой вылет бывает, если тхм не соответствует текстуре и если текстура неправильного размера. Например, в тхм указан размер текстуры 1024х1024, а текстура реально 512х512. Или если размер текстуры не кратен двойке, например 438х256. Исправь или удали неверные файлы, и всё пойдет.
Kontro-zzz
Можно с помощью батников например попробовать обойти эти вылеты (здесь для сдк ЗП, батники строго кидаются в папку эдитор, для запуска ЛЕ и АЕ) https://yadi.sk/d/3xyxXEB-RyGs9A
Костыль конечно не сусветный. happy.gif
Есть небольшой риск потерять папку с текстурами, перед первыми испытаниями лучше сохранить резервную копию папки textures.


aka_sektor
Kontro-zzz, вылет
Цитата(aka_sektor @ 04.04.2019, 21:14) *
(Pos<=Size) && (Pos>=0)

Уже описал по новой: https://modders.pro/SDK:FS.h

Остаётся понять, Pos+cnt<=Size как с ним связан.

Наткнулся на следующий пост: https://ap-pro.ru/forum/54-21741-870351-16-1462211102

Из которого вытекает, что когда происходит вылет (Pos<=Size) && (Pos>=0) в окне, и его можно пропустить, нажав "Продолжить".

Однако, в итоге, появляется вылет Pos+cnt<=Size, который уже пропустить нельзя.
Kontro-zzz
Забыл написать, имел ввиду вылеты при загрузке АЕ или ЛЕ. Возможно они сработают уже в открытых приложениях, но не знаю - можно ли будет текстуры определить, из-за которых случается вылет.
У меня при загрузке срабатывают вот эти:

CODE
exp​ression    : assertion failed
Function : X:\stalker_addon\sources\trunk\Layers\xrRender\ETextureParams.cpp
File : X:\stalker_addon\sources\trunk\Layers\xrRender\ETextureParams.cpp
Line : 69
Description : F.find_chunk(THM_CHUNK_TEXTUREPARAM)

stack trace:

exp​ression : assertion failed
Function : X:\stalker_addon\sources\trunk\xrCore\FS.cpp
File : X:\stalker_addon\sources\trunk\xrCore\FS.cpp
Line : 392
Description : Pos+cnt<=Size

stack trace:

exp​ression : assertion failed
Function : X:\stalker_addon\sources\trunk\xrCore\FS.h
File : X:\stalker_addon\sources\trunk\xrCore\FS.h
Line : 278
Description : (Pos<=Size) && (Pos>=0)

stack trace:

Но все они обходятся кнопкой продолжить, просто задолбало уже каждый раз на нее жмякать, и буфер обмена засирается.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.