doom2d.org
https://www.doom2d.org/forum/

✫ [0.667b] Обёртка FMODex внезапно падает неясным образом
https://www.doom2d.org/forum/viewtopic.php?f=54&t=3321
Page 1 of 1

Author:  Чёрный Думер [ 19 Feb 2024, 01:56 ]
Post subject:  ✫ [0.667b] Обёртка FMODex внезапно падает неясным образом

Отлаживал новую версию своей карты Geobase путём наблюдения за игрой ботов в TDM, по 45 штук в каждой команде.
И заметил, что спустя минут 15-30 игра вылетает с вот таким вот последним прости:
Code:
[0:33:47] !!! Access violation
=====================
  $1002F075
  $1003F146
  $10068F66
  $1006919C
  $10085951
  $10083DD6
  $10082D78
  $10082F1B
  $10071831
  $1007434B
  $100878EC
  $1008E16C
  $1002412F
  $10069D0D
  $004F395D  PROCESSMESSAGE,  line 188 of g_window.pas
  $004F42CD  SDLMAIN,  line 377 of g_window.pas
  $00486566  MAIN,  line 576 of g_main.pas

Происходить это начало ещё до всех моих недавних коммитов в игру, так что я здесь точно ни при чём.
Заинтересовавшись, решил погонять игру в отладчике. И мне улыбнулась удача:
Code:
Index    Location            Line    Function

 0       :1002EE76           -       fmodex:?System_SetDebugMode@FMOD@@YG?AW4FMOD_RESULT@@I@Z+6972
 1       :1003F146           -       fmodex:?System_SetDebugMode@FMOD@@YG?AW4FMOD_RESULT@@I@Z+73228
 2       :10068F66           -       fmodex:?getMemoryUsedImpl@DSPI@FMOD@@QAG?AW4FMOD_RESULT@@PAVMemoryTracker@2@@Z+149117
 3       :1006919C           -       fmodex:?getMemoryUsedImpl@DSPI@FMOD@@QAG?AW4FMOD_RESULT@@PAVMemoryTracker@2@@Z+149683
 4       :10085951           -       fmodex:?System_GetDebugMode@FMOD@@YGIXZ+28419
 5       :10083DD6           -       fmodex:?System_GetDebugMode@FMOD@@YGIXZ+21384
 6       :10082D78           -       fmodex:?System_GetDebugMode@FMOD@@YGIXZ+17194
 7       :10082F1B           -       fmodex:?System_GetDebugMode@FMOD@@YGIXZ+17613
 8       :10071831           -       fmodex:?wakeupThread@AsyncThread@FMOD@@QAG?AW4FMOD_RESULT@@XZ+20398
 9       :1007434B           -       fmodex:?validate@ChannelI@FMOD@@SG?AW4FMOD_RESULT@@PAVChannel@2@PAPAV12@@Z+2252
10       :100878EC           -       fmodex:?getUserDataInternal@SoundI@FMOD@@QAG?AW4FMOD_RESULT@@PAPAX@Z+4369
11       :1008E16C           -       fmodex:?getUserDataInternal@SoundI@FMOD@@QAG?AW4FMOD_RESULT@@PAPAX@Z+31121
12       :1002412F           -       fmodex:?update@System@FMOD@@QAG?AW4FMOD_RESULT@@XZ+29
13       :10069D0D           -       fmodex:FMOD_System_Update+50
14       e_sound_fmod.inc    726     e_SoundUpdate
15       g_window.pas        182     ProcessMessage
16       g_window.pas        371     PerformExecution
17       g_main.pas          579     Main
18       Doom2DF.lpr         236     $main
19       :00414267           -       SYSTEM_$$_EXE_ENTRY$TENTRYINFORMATION+71
20       :00401F6D           -       _WinMainCRTStartup+45
21       :75F6343D           -       kernel32:BaseThreadInitThunk+18
22       :77CA9812           -       ntdll32:RtlInitializeExceptionChain+99
23       :77CA97E5           -       ntdll32:RtlInitializeExceptionChain+54

Номера строк соответствуют коммиту 1f4e9f21, версия FMODex - 4.30.22 (та, что ныне поставляется с игрой; CRC32-сумма DLL-библиотеки - 16299F6D).
Собирал через FPC 3.2.2 из Lazarus 3.0, однако наличие fmodex:?getUserDataInternal в списке подсказывает, что ошибка всё же где-то у нас.
Возможно, связано с вот этим вот случайным вылетом, так как он тоже произошёл в коде callback'а обёртки: viewtopic.php?f=38&t=3317#p46671

Важное примечание: всё это тестировалось на машине в условиях некоторой нехватки памяти (диспетчер задач отображал занятыми 91% из 16ти гигабайт). Может быть, это тоже повлияло. Но всё равно падать по звуку не должно даже в таком случае. на более новом ноутбуке моего товарища также вылетает аналогичным образом, а памяти у него хватает + включён файл подкачки, так что дело почти наверняка не в этом

Attachments:
dfclient-2024-02-12-23-21-26.log [34.48 KiB]
Downloaded 139 times
dfconfig.cfg [5.71 KiB]
Downloaded 128 times

Author:  DeaDDooMER [ 20 Mar 2024, 21:30 ]
Post subject:  Re: [0.667b] Обёртка FMODex внезапно падает неясным образом

Неплохо бы уточнить трапнулось оно на nil dereference или invalid address или еще как?

Чёрный Думер wrote:
наличие fmodex:?getUserDataInternal в списке подсказывает, что ошибка всё же где-то у нас
FMOD_Sound_GetUserData() используется только в Channel_Callback().
Может быть такое что бы FMOD_Channel_GetCurrentSound вернул и ОК, и sound=nil одновременно?

Author:  Чёрный Думер [ 21 Mar 2024, 02:19 ]
Post subject:  Re: [0.667b] Обёртка FMODex внезапно падает неясным образом

DeaDDooMER» Неплохо бы уточнить трапнулось оно на nil dereference или invalid address или еще как?
Я это в ближайшее время сам отлажу, т.к. есть подозрение, что проблема ненароком исправилась после этого коммита:
https://repo.or.cz/d2df-sdl.git/commitdiff/ed4faa6fb8b106ae2c7ecfa4d84807a8c118e611
После этого запускал на ночь тот же тест с ботами, и обе команды там спокойно доигрались до отрицательных фрагов.

UPD: Пока что просто отметил как "В работе".

Page 1 of 1 All times are UTC + 3 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/