Jump to content
Полтергейст

Вылеты без логов - в чём причины и как с ними бороться

Recommended Posts

Gute Nacht, всем, кто не спит в эту замечательную (чудесную) ночь. Честно говоря, долго думал как написать (да и писать ли вообще, и в какой теме). Но все же решился, потому как не оставляет меня эта проблема в покое. Постараюсь сильно не отходить от темы, так что сразу напишу о сути "проблемы". Коротко.

И так, играя в сталкер в недалекой середине этого года, я попутно его модифицировал. И, видимо, таким же способом создавал различные баги даже не замечая этого. Дойдя до конца игры, я столкнулся со следующей проблемой:

 

Эпизод на ЧАЭС нереально пройти. Дальше первой стычки с монолитом лучше не играть. Сохранение просто на просто не загрузится. Но может это было и к лучшему было тогда, кто знает. Но ведь нет, вздумалось мне опять играть в игры и вернуться к этому Чистому небу. Баг я так тогда и не смог исправить. Кстати, то была не единственная проблема, как оказалось. Их было две...

 

Собственно сам вылет:


0023:048A1567 xrGame.dll

0023:004193C1 xrEngine.exe, CEffectorPP::CEffectorPP()

0023:04B4DDA8 xrGame.dll, CxImage::`copy constructor closure'()

0023:04BD1F74 xrGame.dll

 

Или мог быть еще вот такой лог:

0023:00000000 xrEngine.exe

0023:04AAFA3A xrGame.dll, CxImage::`copy constructor closure'()

0023:04BADD98 xrGame.dll, CxImage::`copy constructor closure'()

0023:04878D50 xrGame.dll

 

[error][      87]    : Параметр задан неверно.

 

Значения типа 04BD1F74 зачастую менялись, как видно.

CxImage::`copy constructor closure'() - может, где-то допущена синтаксическая ошибка? Типа не дописан "then", как я часто делаю.


 

Даже представить не могу с чем связан вылет. Я много чего позабыл за прошедшее время.

 


...в частности, после того как не пользовался компом около полугода. Кстати, когда-то в теме OGSM писал о вылете, который исправил именно после ремонта компа. Там очень классное исправление было - можно было книгу написать "Думай, перед тем, как что-то делать"


 

Сборка игры на основе OGSM CS 1.8 CE + Compilation Fixes релиза 12.07.2014 (+ множество моих правок, которые делались еще с далекого 2012-го, вроде..)

Правда, OGSM не имеет никакого отношения к этому вылету - игра была уже успешно пройдена с этим модом, с моими и без моих правок. Правда, не мной. Я только один раз прошел эту игру до конца (именно до конца, и даже во "фриплее" играл). Последнее сохранение было сделано 17 ‎сентября ‎2014 ‎г., в ‏‎05:27.

 

P.S.: Писал это сообщение основываясь на информации, изложенной в моем дневнике, который я создал когда играл в эту игру. Возможно, что-то не дописал или написал не правильно - вы поправьте, если что. В смысле, скажите чего не хватает. Хотел подробно описать каждый момент. Подробно, но коротко. Может, что-то забыл, что-то было не к месту. И все же я отходил от темы...

P.P.S: Вы мне просто объясните, с чем связан этот вылет и в какую сторону копать. Исправлять, понятное дело, я буду сам.

 

---------------------

 

P.P.P.S: Более подходящих тем не нашел, так что... возможно ошибся с выбором темы.

 


Вижу, у меня в дневнике было множество записей со странными вылетами или непонятными записями в log (некоторые даже к OGSM относятся), но сейчас интересует конкретно этот вылет.


Edited by AlezZ

Мы построили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее... ©

Share this post


Link to post
Share on other sites
Дополню коллекцию.

 

Текст ошибки:


stack trace:

0023:034B40F2 xrRender_R1.dll

0023:046C3E35 xrGame.dll

 

Используемая библиотека xrRender_R1.dll может отличаться в зависимости от того, какой тип рендера используется (версия DirectX). У меня была xrRender_R3.dll (DirectX 10.1).


 

Описание ошибки и причины возникновения:


Ключевая библиотека здесь xrRender_R1.dll. Она-то и подтолкнула меня на правильный путь, так сказать. Все дело в несоответствии используемых "худовых" (hud) и  "мировых" (world) моделей. А точнее, находящихся в них костей.


 

Подробное описание:


Допустим, у Вас в hud-модели есть возможность установить прицел (кость wpn_scope), а в world-модели этого нет - вот и будем ловить такой вылет. Хороший пример: попробуйте перенести пистолет-пулемет HK MP5A2 из Shoker Weapons Mod в ЧН (вместе с конфигами, но без wpn_mp5.ogf) - врядли Вы сможете игру запустить.

 

Ладно, вот реальный пример: используя худовую модель из вышеперечисленного мода, я добавил мировую из несовместимого Modern Weapons Mod for Clear Sky - потом еще удивился, почему это одни локации загружаются, а другие - нет.


 

Исправление ошибки:


Самое простое: удаляем (или перемещаем) несовместимую модель и все - проблема решена. Как найти нужную сами догадаетесь.


 

Используемая игра: S.T.A.L.K.E.R. - Чистое небо

 

P.S.: Нигде не нашел описание данного вылета, посему решил добавить его в эту тему. Написал по своему горькому опыту. Может кому пригодится  :)

P.P.S.: Набирая названия модов, я не преследовал цель рекламировать их, а всего лишь описал реальный пример такого вылета. К тому же, все знают об этом замечательном моде)

 

  • Thanks 1
  • Полезно 2

Мы построили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее... ©

Share this post


Link to post
Share on other sites

доброго времени суток, ребят. 

 

спустя полтора года мой персонаж снова очутился на просторах Чернобыльской АЭС, пытаясь выбраться из западни CEffectorPP и изо всех сил стараясь пройти этот переломный момент, когда в твоих руках свобода, о которой только может мечтать человек.

ты снова и снова делаешь это и в конце жмешь F5, чтобы увековечить этот момент. затем сворачиваешь игру чтобы посмотреть в журнал, подаренный самим Богом и вглядываешься туда: в этот самый момент видишь заветное «You are saving too much!», которое прояснилось только сейчас.

 

на момент загрузки: _actor_binder. LOAD DIF: 5880

после сохранения: _actor_binder: SAVE DIF: 12133

 

при попытке загрузить такое сохранение, игра будет крашиться со знакомым уже логом (я о нем писал постами выше). это и была причина вылета, о котором я писал в 2016 году.)

вы скажите, мол, лучше забить на все это и пересобрать свою игру на основе свежего OGSM, над которым очень хорошо потрудились (за что им огромное спасибо).

нет, дело даже не в этом. я... мне не дает покоя то, что это может повториться снова.

 

 _se_actor и _actor_binder  что общего между ними? что способствует такому росту save_marker's в этих?... (не помню как называются). биндер актора забивался всю игру разным хламом и на ЧАЭС появилось нечто, что добило его?

 

тот же _se_actor на момент загрузки равен 1642, потом почему-то уменьшается до 1630 и после сохранения равен 1630  _CRandomTask, например, та же ситуация). за сохранение так сильно раздувается только _actor_binder.

что примечательно, _ogsm_notepad так же велик: 3875 (использую улучшенную версию КПК).

 

P.S. брат мой мелкий, бедолага, продолжает играть на той же сборке - у него с сейвами все в порядке (в ЧАЭС только вернуться не может - вечный вылет из-за снайпера в Госпитале).

 

у него более-менее адекватные данные (наверное):

Скрытый текст

 

_actor_binder: LOAD DIF: 7424

_ogsm_notepad: LOAD DIF: 257

_se_actor: LOAD DIF: 3382

_sound_actor_save: SAVE DIF: 2592

 

 

спасибо за внимание.

Edited by AlezZ

Мы построили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее... ©

Share this post


Link to post
Share on other sites

@Архаровец, журнал совсем пуст, или пишет что-нибудь туда? возможно, дело в precondition: проверь скрипт escape_diaog - написание имени функции, или самого скрипта - возможно, дело в них.

поскольку у тебя в следующем условии скорее всего используется тот же скрипт (escape_dialog.has_item), то дело наверняка в этом - ошибка при наборе названия скрипта, где вызывается функция.

 

для наглядности: у тебя в одном условии скрипт называется escape_diaog, а во втором - escape_dialog.

Скрытый текст

<dialog id="test_dialog">
    <precondition>escape_diaog.trader_alredy_give_job</precondition> <!-- проверяй название скрипта при наборе -->
    <has_info>tutorial_end</has_info>
        <phrase_list>
        <phrase id="0">
            <text>test_dialog_0</text>
        <next>1</next>
        </phrase>
        <phrase id="1">
            <text>test_dialog_1</text>
            <next>2</next>
            <next>4</next>
            <next>5</next>
        </phrase>
        <phrase id="2">
            <dont_has_info>test_start</dont_has_info>        
            <text>test_dialog_2</text>
            <give_info>test_start</give_info>
            <next>3</next>
        </phrase>
        <phrase id="3">
            <text>test_dialog_3</text>
            <action>dialogs.break_dialog</action>
            </phrase>
            <phrase id="4">
            <text>test_dialog_4</text>
            <precondition>escape_dialog.has_item</precondition>  <!--  здесь же скрипт прописан правильно -->
            <action>escape_dialog.item_dar</action>
            <next>7</next>
         </phrase>
        <phrase id="5">
            <has_info>test_start</has_info>        
            <text>test_dialog_5</text>
            <next>6</next>
        </phrase>
        <phrase id="6">
            <text>test_dialog_6</text>
            <next>8</next>
        </phrase>
        <phrase id="7">
            <text>test_dialog_7</text>
            <give_info>test_done</give_info>
            <action>escape_dialog.dat_item</action>
            <next>8</next>
        </phrase>
        <phrase id="8">
            <text>test_dialog_8</text>
        </phrase>            
       </phrase_list>
</dialog>

 

 

  • Thanks 1

Мы построили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее... ©

Share this post


Link to post
Share on other sites

P.S. ребят, простите, не успел отредактировать предыдущий пост, по этому пишу сюда: никто не скажет, что у меня с классом _actor_binder ? ни в какую не получается разобраться из-за чего он забивается буквально за один сейв. я по одному скрипту убираю в биндере и тестирую в игре - сейчас остановился на ogsm.script: вчера отключил его и бродил по ЧАЭС, сохраняясь моментами - ни одного вылета.

--/ или мне это приснилось?

 

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

ведь S.T.A.L.K.E.R. жив :facepalm:

P.P.S. наверное, нужно будет говорить модераторам чтобы объединяли мои посты, если и дальше буду писать здесь о продвижении?

Edited by AlezZ
  • Thanks 1

Мы построили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее... ©

Share this post


Link to post
Share on other sites

@Архаровец, да не за что. мы учимся на своих ошибках, как говорится)

 

P.S. к теме твоего вылета по большей части не относится, пишу лишь для справки (чтобы не плодить посты, +может быть будет полезно).

«это когда пытаешься узнать причину вылета, забиваешь на все и в итоге через 1,5 года догадываешься по-отрубать все update-скрипты в биндере, отлаживаешь его и в итоге за 5 сек. весь лог усыпан ошибками»: :facepalm:

It was at this moment that he knew, he f*cked up

 

Скрытый текст

! [LUA][ERROR] ogsm.start_timer: [sav] OGSM timers count > 99, return
! [LUA]  0 : [C  ] error_log
! [LUA]  1 : [Lua] ....a.l.k.e.r. - clear sky\gamedata\scripts\ogsm.script(90) : start_timer
! [LUA]  2 : [Lua] ....a.l.k.e.r. - clear sky\gamedata\scripts\ogsm.script(499) : __do_timer_action
! [LUA]  3 : [Lua] ....a.l.k.e.r. - clear sky\gamedata\scripts\ogsm.script(296) : __timer_found
! [LUA]  4 : [Lua] ....a.l.k.e.r. - clear sky\gamedata\scripts\ogsm.script(267) : check_timers
! [LUA]  5 : [Lua] ....a.l.k.e.r. - clear sky\gamedata\scripts\ogsm.script(659) : on_actor_update
! [LUA]  6 : [Lua] ....r. - clear sky\gamedata\scripts\bind_stalker.script(476) : 

таймер даже при 109 не стартовал...

 

это, блин, смешно, черт возьми! больно видеть такое, почему мне сразу нельзя было проверить таймеры?.:mosking: ладно, бог с ним. кто знает, может и таймеры тогда всю игру забивали _actor_binder.

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

 

что можно сказать в итоге:

Скрытый текст

 

1. слишком много фактов. я спать.
2. когда тестируете что-либо, окончательно удаляйте следы своих тестов.

3. надеюсь, сюда не доберутся ребята, которые работали над OGSM CS 1.8 :rolleyes:

 

 

доброй ночи / удачи всем :)


Мы построили реальный мир, превратив его в убожество, теперь отстраиваем виртуальный, надеясь на лучшее... ©

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

AMK-Team.ru

×
×
  • Create New...