nillerusr / source-engine

Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
Other
1.22k stars 190 forks source link

Error arm64 Ubuntu with engine crash #299

Open ArtemS2 opened 12 months ago

ArtemS2 commented 12 months ago

Hello, I'm in trouble! An error occurs when aiming. Error: SV_PackEntity: SnagChangeFrameList returned null https://drive.google.com/file/d/1gT6CpH8dGO_cKOb8A2PSVyXpfRYXgxU4/view?usp=sharing - screenshot

https://drive.google.com/file/d/1K6vlVmQQ1WMpIrr_kL6rIlg2OBZpA9KL/view?usp=sharing - engine logs

https://drive.google.com/file/d/1CTpIkgE7qU39wGAju7SUeKAWNPVQqlZi/view?usp=sharing - my system

https://drive.google.com/file/d/1NJEj52nkgzaoGJLb5rYGxT1oTDCWUA_7/view?usp=sharing - sys.log

nillerusr commented 12 months ago

Короче обнови репу и пересобери все. Посмотрим будут ли вылеты

ArtemS2 commented 12 months ago

Не, новый вылет после сборки из новой репы. И собираться стало дольше на 3 минуты. Thread 1 "hl2_launcher" received signal SIGSEGV, Segmentation fault. 0x0000fffff029b11c in CDataCacheSection::Unlock (this=this@entry=0xaaaaaaf45bb0, handle=0x10110) at ../datacache/datacache.cpp:384 384 nBytesUnlocked = AccessItem( (memhandle_t)handle )->size; (gdb) bt

0 0x0000fffff029b11c in CDataCacheSection::Unlock (

this=this@entry=0xaaaaaaf45bb0, handle=0x10110)
at ../datacache/datacache.cpp:384

1 0x0000fffff029b264 in CDataCacheSection::Unlock (handle=,

this=0xaaaaaaf45bb0) at ../datacache/datacache.cpp:376

2 CDataCacheSection::EndFrameLocking (this=0xaaaaaaf45bb0)

at ../datacache/datacache.cpp:557

3 0x0000fffff02a0a00 in CMDLCache::EndLock (this=0xfffff0315fd0 )

at ../datacache/mdlcache.cpp:2417

4 0x0000ffffb77000f4 in CMDLCacheCriticalSection::~CMDLCacheCriticalSection (

this=<synthetic pointer>, __in_chrg=<optimized out>)
at ../public/datacache/imdlcache.h:285

5 OnRenderStart () at ../game/client/cdll_client_int.cpp:2221

6 0x0000fffff2aa4c78 in SCR_UpdateScreen () at ../engine/gl_screen.cpp:261

7 0x0000fffff299ae7c in Host_UpdateScreen () at ../engine/host.cpp:2249

8 _Host_RunFrame_Render () at ../engine/host.cpp:2786

9 0x0000fffff299c09c in _Host_RunFrame (time=time@entry=0.0125111267)

at ../engine/host.cpp:3496

10 0x0000fffff299c568 in Host_RunFrame (time=time@entry=0.0125111267)

at ../engine/host.cpp:3619

11 0x0000fffff29a83b8 in CHostState::State_Run (

this=this@entry=0xfffff2f84520 <g_HostState>, 
frameTime=frameTime@entry=0.0125111267) at ../engine/host_state.cpp:505

--Type for more, q to quit, c to continue without paging--

12 0x0000fffff29a8890 in CHostState::FrameUpdate (

this=this@entry=0xfffff2f84520 <g_HostState>, time=0.0125111267)
at ../engine/host_state.cpp:648

13 0x0000fffff29a893c in HostState_Frame (time=)

at ../engine/host_state.cpp:124

14 0x0000fffff2a083a0 in CEngine::Frame (this=0xfffff2fa2dc0 )

at ../engine/sys_engine.cpp:432

15 0x0000fffff2a04550 in CEngineAPI::MainLoop (

this=this@entry=0xfffff2f8b530 <s_EngineAPI>)
at ../engine/sys_dll2.cpp:1537

16 0x0000fffff2a046d0 in CModAppSystemGroup::Main (this=)

at ../engine/sys_dll2.cpp:2109

17 0x0000fffff2c6f920 in CAppSystemGroup::Run (this=this@entry=0xffffffffc418)

at ../appframework/AppSystemGroup.cpp:380

18 0x0000fffff2a06568 in CEngineAPI::RunListenServer (

this=0xfffff2f8b530 <s_EngineAPI>) at ../engine/sys_dll2.cpp:1818

19 0x0000fffff7dbe730 in CAppSystemGroup::Run (this=0xffffffffc620)

at ../appframework/AppSystemGroup.cpp:380

20 0x0000fffff7dbe730 in CAppSystemGroup::Run (this=0xffffffffc588)

at ../appframework/AppSystemGroup.cpp:380

21 0x0000fffff7d9c91c in LauncherMain (argc=,

argv=<optimized out>) at ../launcher/launcher.cpp:1493

22 0x0000aaaaaaaa0e44 in main (argc=3, argv=0xffffffffec18)

--Type for more, q to quit, c to continue without paging-- at ../launcher_main/main.cpp:297 (gdb)

nillerusr commented 12 months ago

Ну то что собираться стало дольше это уже твои проблемы. А краш звездец какой странный. Попробуй обновить компилятор

ArtemS2 commented 12 months ago

Да вроде из оф репов последнии версии компиляторов стоят. Мб конечно, это потому что я не собрал bin для hl2, но сейчас соберу и попробую еще протестить.

nillerusr commented 12 months ago

Если ты тестировал это на css то не важно что в hl2 он их не грузит

nillerusr commented 12 months ago

ну ты можешь попробывать CXX=clang CC=clang еще Если gcc новее нету

nillerusr commented 12 months ago

Это конечно не решение ведь разные компиляторы могут по-разному оптимизировать код. Посмотреть бы хотя бы что там в памяти хранится. Кхм. А собери с -T debug с gcc ./waf configure -T debug вместо -T release Если поймаешь краш не закрывай gdb посмотрим че там лежит в памяти

ArtemS2 commented 12 months ago

CC="gcc -g" CXX="g++ -g" а это больше не нужно добавлять?

nillerusr commented 12 months ago

@ArtemS2 не убирай пока

ArtemS2 commented 12 months ago

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

nillerusr commented 12 months ago

@ArtemS2 В debug режиме отключается значительная часть оптимизаций компилятором. там может быть просто такой баг, что не проявляется без этих оптимизаций

ArtemS2 commented 12 months ago

@nillerusr Ну я заметил, что иногда были небольшие подвисания, они конечно лучше чем вылеты. Попробую ещё завтра поиграть с debug. И наверное, потом другим компилятором соберу.

ArtemS2 commented 12 months ago

Вообще чудно , что в последнем lts выпуске убунту положили в arm версию такой странный компилятор , учитывая что под x86-64 у них таких проблем нет.

nillerusr commented 12 months ago

@ArtemS2 Это тоже далеко не факт, что это вина компилятора. Это запросто может быть просто какой-то тупорылый баг который проявляется только с gcc на arm64. Я под android собираю его только с clang. На 32 бит с gcc не было таких проблем на андроиде тоже. Ну вообщем дя

ArtemS2 commented 12 months ago

Смог словить баг , но правда только играя с ботами, но ждал очень долго (gdb) bt

0 0x0000000000000000 in ?? ()

1 0x0000ffffe9d6da90 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libshaderapidx9.so

2 0x0000fffff06b4520 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

3 0x0000fffff068e738 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

4 0x0000fffff05f91a8 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

5 0x0000fffff05f9294 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

6 0x0000fffff05f8de8 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

7 0x0000fffff067c190 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

8 0x0000fffff067bdb8 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

9 0x0000fffff0681e74 in ?? ()

from /home/artem/games/hlisx/HL2/bin/libmaterialsystem.so

10 0x0000fffff7dafd84 in ?? () from bin/liblauncher.so

11 0x0000fffff7db0074 in ?? () from bin/liblauncher.so

12 0x0000fffff7dafea0 in ?? () from bin/liblauncher.so

13 0x0000fffff7dbbfac in ?? () from bin/liblauncher.so

--Type for more, q to quit, c to continue without paging--

14 0x0000fffff7dafe94 in ?? () from bin/liblauncher.so

15 0x0000fffff7d7f4fc in LauncherMain () from bin/liblauncher.so

16 0x0000aaaaaaaa139c in ?? ()

17 0x0000fffff7e173fc in __libc_start_call_main (

main=main@entry=0xaaaaaaaa119c, argc=argc@entry=3, 
argv=argv@entry=0xffffffffec18)
at ../sysdeps/nptl/libc_start_call_main.h:58

18 0x0000fffff7e174cc in __libc_start_main_impl (main=0xaaaaaaaa119c, argc=3,

argv=0xffffffffec18, init=<optimized out>, fini=<optimized out>, 
rtld_fini=<optimized out>, stack_end=<optimized out>)
at ../csu/libc-start.c:392

19 0x0000aaaaaaaa0d70 in ?? ()

ArtemS2 commented 12 months ago

Еще бывают такие приколюхи и они не только на orange pi, на raspberry pi 4b в Raspbian тоже такие штуки заметил. Снимок экрана от 2023-10-08 19-25-08

nillerusr commented 12 months ago

@ArtemS2 к этому окну я уже точно вообще не причем. Не используй gnome

nillerusr commented 12 months ago

Смог словить баг , но правда только играя с ботами, но ждал очень долго

Это уже другая совсем херня. И как ты умудрился дебаг символы потерять в дебаг сборке?

ArtemS2 commented 12 months ago

Так на lxde оно тоже появляется

nillerusr commented 12 months ago

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

ArtemS2 commented 12 months ago

Ну с этим окном , оно не критично

nillerusr commented 12 months ago

Бля попробуй играть с lldb, у тебя что-то с gdb какие-то приколы. Запускается вроде все точно так же

ArtemS2 commented 12 months ago

а это как можно запустить?

nillerusr commented 12 months ago

Точно так же просто вместо gdb пишешь lldb

nillerusr commented 12 months ago

А ну почти lldb -- ./hl2_launcher

ArtemS2 commented 12 months ago

Вообще как-то странно , на debug сборке пропали вылеты там где они раньше были в half life 2 . Сегодня прошел несколько глав и ничего не вылетело, но были секундные неуспевания подгрузки текстур.

ArtemS2 commented 12 months ago

На всякий случай пересоберу cs

ArtemS2 commented 12 months ago

Получил ошибку $ lldb -- ./hl2_launcher Traceback (most recent call last): File "", line 1, in ModuleNotFoundError: No module named 'lldb.embedded_interpreter' (lldb) target create "./hl2_launcher" Current executable set to '/home/artem/games/hlisx/HL2/hl2_launcher' (aarch64). (lldb) run Process 33660 launched: '/home/artem/games/hlisx/HL2/hl2_launcher' (aarch64) Process 33660 stopped

ArtemS2 commented 12 months ago

Решил еще раз через gdm поиграть, через очень большое время словил вылет: Произошло когда уже решил выключить игру. Thread 1 "hl2_launcher" received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () (gdb) bt

0 0x0000000000000000 in ?? ()

1 0x0000ffffe955da90 in CShaderAPIDx8::Bind (

this=0xffffe965d590 <g_ShaderAPIDX8>, pMaterial=0xaaaaaadca558)
at ../materialsystem/shaderapidx9/shaderapidx8.cpp:12361

2 0x0000fffff06b4520 in CMatRenderContext::Bind (

this=0xfffff0814b10 <g_MaterialSystem+9344>, iMaterial=0xaaaaaadca558, 
proxyData=0x0) at ../materialsystem/cmatrendercontext.cpp:2253

3 0x0000fffff068e738 in CMaterialSystem::UnbindMaterial (

this=0xfffff0812690 <g_MaterialSystem>, pMaterial=0xaaaaba03d718)
at ../materialsystem/cmaterialsystem.cpp:5065

4 0x0000fffff05f91a8 in CMaterial::~CMaterial (this=0xaaaaba03d718,

__in_chrg=<optimized out>) at ../materialsystem/cmaterial.cpp:518

5 0x0000fffff05f9294 in CMaterial::~CMaterial (this=0xaaaaba03d718,

__in_chrg=<optimized out>) at ../materialsystem/cmaterial.cpp:544

6 0x0000fffff05f8de8 in IMaterialInternal::DestroyMaterial (

pMaterial=0xaaaaba03d718) at ../materialsystem/cmaterial.cpp:450

7 0x0000fffff067c190 in CMaterialDict::RemoveAllMaterials (

this=0xfffff08129d8 <g_MaterialSystem+840>)
at ../materialsystem/cmaterialdict.cpp:166

8 0x0000fffff067bdb8 in CMaterialDict::Shutdown (

this=0xfffff08129d8 <g_MaterialSystem+840>)
at ../materialsystem/cmaterialdict.cpp:48

9 0x0000fffff0681e74 in CMaterialSystem::Shutdown (

--Type for more, q to quit, c to continue without paging-- this=0xfffff0812690 ) at ../materialsystem/cmaterialsystem.cpp:936

10 0x0000fffff7dafd84 in CAppSystemGroup::ShutdownSystems (

this=0xffffffffd630) at ../appframework/AppSystemGroup.cpp:325

11 0x0000fffff7db0074 in CAppSystemGroup::OnShutdown (this=0xffffffffd630)

at ../appframework/AppSystemGroup.cpp:469

12 0x0000fffff7dafea0 in CAppSystemGroup::Run (this=0xffffffffd630)

at ../appframework/AppSystemGroup.cpp:383

13 0x0000fffff7dbbfac in CSteamApplication::Main (this=0xffffffffd598)

at ../appframework/posixapp.cpp:158

14 0x0000fffff7dafe94 in CAppSystemGroup::Run (this=0xffffffffd598)

at ../appframework/AppSystemGroup.cpp:380

15 0x0000fffff7d7f4fc in LauncherMain (argc=3, argv=0xffffffffec18)

at ../launcher/launcher.cpp:1493

16 0x0000aaaaaaaa139c in main (argc=3, argv=0xffffffffec18)

at ../launcher_main/main.cpp:297

(gdb)

nillerusr commented 12 months ago

А этот краш при выключении игры существует везде, не интересно. Но тоже надо пофиксить конечно. Чуть позже займусь этим

ArtemS2 commented 12 months ago

Ну больше мне ничего не получилось поймать, на debug видимо все работает стабильно, кроме выше перечисленных особенностей( Мне получается лучше закрыть эту ветку? (кстати почему-то некоторые debug бинарники занимают значительно больше места чем такие же release)

nillerusr commented 12 months ago

@ArtemS2 потому что получается больше кода и все символы отладочные(названия функций пишутся, переменных и т д)

ArtemS2 commented 11 months ago

@nillerusr Пересобрал через clang компилятор , (CXX=clang CC=clang ./waf configure -T release --64 --enable-opus --prefix=out) получил ошибку при запуске .

./hl2_launcher -game hl2 bin/libtier0.so: undefined symbol: _ZTVN10cxxabiv120si_class_type_infoE Failed to load the launcher bin/launcher.so: cannot open shared object file: No such file or directory Failed to load the launcher

Проверил все несколько раз, ошибка повторяется.

nillerusr commented 11 months ago

Почисти сборку

ArtemS2 commented 11 months ago

А что делать если ./waf clean не помогает?)

nillerusr commented 11 months ago

кхм, менять дистр?

rox4d commented 11 months ago

git clean -dxf должен почистить до исходного состояния p.s. и проблема не в этом, но что-то гуглится p.p.s. д.б. CXX=clang++ релизная сборка с clang (aarch64) у меня крэшится примерно c той же частотой что релизная gcc (т.е. практически сразу, gcc с debug вроде работает), но у меня системный драйвер panfork, а запускаю с блобом (libmali-valhall-g610-g13p0-x11-gbm.so), в логе ядра:

[55897.514967] mali fb000000.gpu: GPU Fault 0x04c00488 (GPU_SHAREABILITY_FAULT) in AS1 at 0x000000013a9755bf
               ASID_VALID: false,  ADDRESS_VALID: true
[55897.515008] mali fb000000.gpu: GPU Fault 0x04c00488 (GPU_SHAREABILITY_FAULT) in AS2 at 0x000000013a9755bf
               ASID_VALID: false,  ADDRESS_VALID: true
[55897.515284] mali fb000000.gpu: GPU Fault 0x20c00488 (GPU_SHAREABILITY_FAULT) in AS2 at 0x000000015e88d5bf
               ASID_VALID: false,  ADDRESS_VALID: true

может в фоне оболочка чего запускает (GL-й screensaver точно мешал), с другой стороны gcc-й debug вроде норм (ну по крайней мере несопоставимо стабильней)

nillerusr commented 11 months ago

@rox4d да незачем тут git clean. Ну и да если у тебя драйвер фэйлится, то я тут причем?) У него явно видно, что дело не в дровах. Насчет твоего случая я не знаю репорти разрабам драйверов

rox4d commented 11 months ago

Ну и да если у тебя драйвер фэйлится, то я тут причем?)

Да я собственно никого не обвиняю, мне пока не очевидно что это причина а не следствие, попробую в gdb поймать, может виднее будет p.s. из под gdb оно не крэшиться а виснет, но похоже дело действительно в драйвере (который libmali-valhall-g610-g13p0-x11-gbm.so), т.к. с panfork и clang релиз работает, при выходе правда "Ошибка сегментирования" и вроде повторяемая

ArtemS2 commented 11 months ago

С CXX=clang++ опцией пока лучший вариант, вылетов нет, есть редкие микрофризы и статтеры. FPS выше , чем gcc debug. Мне кажется , что бага всё-таки есть, но в текущем виде просто сменилась на короткие рандомные подвисания, поймать такое в отладке, наверное будет очень сложно.

nillerusr commented 11 months ago

@ArtemS2 подсвисания и так были везде на arm. А вот касательно debug билда может быть такое, что вообще ты там это никогда в жизни не словишь, потому что это опять же другая генерация кода и другое поведения. Нарушение стандарта c/c++ может оборачиваться в подобную проблему. На каких-то платформах это может проявлятся, на каких-то нет. Где-то может быть банально ошибка компилятора, где-то компилятор может увидеть нарушение стандарта и учесть это при компиляции. Короче не все так просто, да.

Бага скорее всего есть, вопрос только в компиляторе или у меня. Потому что никто я собирал на macos с gcc под aarch64 и там опять же такой херни не было. И до этого люди у меня на малинку тоже собирали, не было таких проблем. Есть даже сервера которые хостятся на aarch64 и там тоже такой нету такой же проблемы( правда сервера это не много другое все же, т.к. там не все участки кода проблемные могут задействоваться конечно ).

Как говорил мой знакомый, айти - это творческая хуйня.

Ты мог вообще какой-то абсолютно случайный баг поймать, который зависит от работы драйверов вообще, косвенно конечно, не напрямую. Все это отлаживать больно особенно когда... Кхм стоп а может ты можешь дать доступ мне по ssh к скрину с запущенным gdb? Так найти проблему будет гораздо легче

ArtemS2 commented 11 months ago

@nillerusr , нужно сделать скрины сессии под debug бинарниками (выхлоп консоли gdm)? В теории (если нужно) я могу организовать доступ по ssh к своему одноплатнику, но боюсь у меня это возможно только через openvpn туннель. Если нужны только скрины degug сессии, то нравное может быть проще скинуть через телегу или дискорд?

nillerusr commented 11 months ago

@ArtemS2 да кстати, лучше пиши в тг, ник тот же