LINUX.ORG.RU

Падает retroarch при попытке запустить игры PS2

 


0

1

Здравствуйте уважаемые господа. Подскажите, пожалуйста, у меня падает retroarch при попытке запустить игры PS2.\

Для retroarch стоит ядро для запуска игр PS2:

local/libretro-play 8027-1 (libretro)
    Sony PlayStation 2 core

При выборе любой игры и нажатии на кнопку «play» падает:

% retroarch
[1]    34982 IOT instruction (core dumped)  retroarch

Если посмотреть сам дамп, то там будет следующее:

(gdb) bt full
#0  0x00007f540d7b383c in  () at /usr/lib/libc.so.6
#1  0x00007f540d763668 in raise () at /usr/lib/libc.so.6
#2  0x00007f540d74b4b8 in abort () at /usr/lib/libc.so.6
#3  0x00007f53df990064 in  () at /usr/lib/libretro/play_libretro.so
#4  0x00007f53dfd63084 in  () at /usr/lib/libretro/play_libretro.so
#5  0x00007f54109a552a in _Unwind_RaiseException_Phase2
    (exc=exc@entry=0x7f53d83ec950, context=context@entry=0x7f53f13b9190, frames_p=frames_p@entry=0x7f53f13b9280) at /usr/src/debug/gcc/gcc/libgcc/unwind.inc:64
        fs = {regs = {reg = {{loc = {reg = 16, offset = 16, exp = 0x10 <error: Cannot access memory at address 0x10>}}, {loc = {reg = 8622844748406309888, offset = 8622844748406309888, exp = 0x77aa7f9ce619c400 <error: Cannot access memory at address 0x77aa7f9ce619c400>}}, {loc = {reg = 139998985109760, offset = 139998985109760, exp = 0x7f540dc6c100 <typeinfo for std::runtime_error> "P\273\306\rT\177"}}, {loc = {reg = 18446744073709551560, offset = -56, exp = 0xffffffffffffffc8 <error: Cannot access memory at address 0xffffffffffffffc8>}}, {loc = {reg = 139998087006576, offset = 139998087006576, exp = 0x7f53d83ec970 "8\302\306\rT\177"}}, {loc = {reg = 8622844748406309888, offset = 8622844748406309888, exp = 0x77aa7f9ce619c400 <error: Cannot access memory at address 0x77aa7f9ce619c400>}}, {loc = {reg = 18446744073709551568, offset = -48, exp = 0xffffffffffffffd0 <error: Cannot access memory at address 0xffffffffffffffd0>}}, {loc = {reg = 139998215254318, offset = 139998215254318, exp = 0x7f53dfe3b12e "\001}\300\376\004"}}, {loc = {reg = 139998215254319, offset = 139998215254319, exp = 0x7f53dfe3b12f "}\300\376\004"}}, {loc = {reg = 139998983290090, offset = 139998983290090, exp = 0x7f540daafcea <__cxxabiv1::__gxx_personality_v0(int, _Unwind_Action, _Unwind_Exception_Class, _Unwind_Exception*, _Unwind_Context*)+1370> "\204\300\017\204\370\376\377\377\353\210H\213T$PH\213|$8L\211\351L\211\366\350\267\370\377\377\204\300\017\205\331\376\377\377\351f\377\377\377f.\017\037\204"}}, {loc = {reg = 139994459013120, offset = 139994459013120, exp = 0x7f5300000000 <error: Cannot access memory at address 0x7f5300000000>}}, {loc = {reg = 139998211567906, offset = 139998211567906, exp = 0x7f53dfab7122 <CPS2VM::CDROM0_SyncPath()+642> "\363\017\036\372H\211\307H\211\320\3518\251\353\377\220ff.\017\037\204"}}, {loc = {reg = 18446744073709551576, offset = -40, exp = 0xffffffffffffffd8 <error: Cannot access memory at address 0xffffffffffffffd8>}}, {loc = {reg = 18446744073709551584, offset = -32, exp = 0xffffffffffffffe0 <error: Cannot access memory at address 0xffffffffffffffe0>}}, {loc = {reg = 18446744073709551592, offset = -24, exp = 0xffffffffffffffe8 <error: Cannot access memory at address 0xffffffffffffffe8>}}, {loc = {reg = 18446744073709551600, offset = -16, exp = 0xfffffffffffffff0 <error: Cannot access memory at address 0xfffffffffffffff0>}}, {l--Type <RET> for more, q to quit, c to continue without paging--
oc = {reg = 18446744073709551608, offset = -8, exp = 0xfffffffffffffff8 <error: Cannot access memory at address 0xfffffffffffffff8>}}, {loc = {reg = 139998506225696, offset = 139998506225696, exp = 0x7f53f13b9020 ""}}}, how = "\000\000\000\001\000\000\001\000\000\000\000\000\001\001\001\001\001", cfa_how = CFA_REG_OFFSET, prev = 0x0, cfa_offset = 144, cfa_reg = 7, cfa_exp = 0x0}, pc = 0x7f53df9b0e1d, personality = 0x7f53dfd62e30, data_align = -8, code_align = 1, retaddr_column = 16, fde_encoding = 27 '\033', lsda_encoding = 27 '\033', saw_z = 1 '\001', signal_frame = 0 '\000', eh_ptr = 0x0}
        match_handler = <optimized out>
        code = <optimized out>
        frames = 3
#6  0x00007f54109a5c52 in _Unwind_RaiseException (exc=0x7f53d83ec950)
    at /usr/src/debug/gcc/gcc/libgcc/unwind.inc:136
        this_context = {reg = {0x7f53f13b9388, 0x7f53f13b9390, 0x0, 0x7f53f13b9398, 0x0, 0x0, 0x7f53f13b93c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f53f13b93a0, 0x7f53f13b93a8, 0x7f53f13b93b0, 0x7f53f13b93b8, 0x7f53f13b93c8, 0x0}, cfa = 0x7f53f13b93d0, ra = 0x7f540dab03de <__cxxabiv1::__cxa_throw(void*, std::type_info*, void (*)(void*))+62>, lsda = 0x0, bases = {tbase = 0x0, dbase = 0x0, func = 0x7f54109a5940 <_Unwind_RaiseException>}, flags = 4611686018427387904, version = 0, args_size = 0, by_value = '\000' <repeats 17 times>}
        cur_context = {reg = {0x7f53f13b9388, 0x7f53f13b9390, 0x0, 0x7f53f13b93f8, 0x0, 0x0, 0x7f53f13b9400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f53f13b93e0, 0x7f53f13b93a8, 0x7f53f13b93b0, 0x7f53f13b93b8, 0x7f53f13b9408, 0x0}, cfa = 0x7f53f13b9410, ra = 0x7f53df9b0de8, lsda = 0x7f53dfe37593, bases = {tbase = 0x0, dbase = 0x0, func = 0x7f53df9b0cd0}, flags = 4611686018427387904, version = 0, args_size = 0, by_value = '\000' <repeats 17 times>}
        code = <optimized out>
        frames = 0
#7  0x00007f540dab03de in __cxxabiv1::__cxa_throw(void*, std::type_info*, void (*)(void*))
    (obj=<optimized out>, tinfo=0x7f540dc6c100 <typeinfo for std::runtime_error>, dest=0x7f540dac8320 <std::runtime_error::~runtime_error()>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:93
        globals = <optimized out>
        header = 0x7f53d83ec8f0
#8  0x00007f53df987605 in  () at /usr/lib/libretro/play_libretro.so
#9  0x00007f53df9b0de8 in  () at /usr/lib/libretro/play_libretro.so
--Type <RET> for more, q to quit, c to continue without paging--
#10 0x00007f53df9b1486 in DiskUtils::CreateOpticalMediaFromPath(std::filesystem::__cxx11::path const&, unsigned int) () at /usr/lib/libretro/play_libretro.so
#11 0x00007f53dfab6f8f in CPS2VM::CDROM0_SyncPath() () at /usr/lib/libretro/play_libretro.so
#12 0x00007f53dfab7739 in CPS2VM::ResetVM() () at /usr/lib/libretro/play_libretro.so
#13 0x00007f53dfab55ea in CPS2VM::EmuThread() () at /usr/lib/libretro/play_libretro.so
#14 0x00007f540dae1943 in std::execute_native_thread_routine(void*) (__p=0x5562fdfed6d0)
    at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
#15 0x00007f540d7b19eb in  () at /usr/lib/libc.so.6
#16 0x00007f540d8357cc in  () at /usr/lib/libc.so.6

Что может быть такое и куда копать?

OS: Arch Linux x86_64
Kernel: 6.1.67-1-lts
DE: Plasma 5.27.10

extra/retroarch 1.16.0.3-1 (libretro) [installed]
    Reference frontend for the libretro API

Это типичная арчепроблема - слишком новый софт. Репорти баг и жди пока сборщик соберет исправленную версию. Или можешь попробовать скачать исходники и сам собрать. Вдруг прокатит?

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Я новость в толксах публиковал про PCSX2 и Wayland. Если кратко, то разрабы эмулятора сказали: ваш Wayland не работает и отключили поддержку.

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от token_polyak

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

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от vbcnthfkmnth123

Я тебе ещё более интересную вещь скажу: поддержка со стороны PCSX2 не особо-то и нужна. Если используется RetroArch, то выводом графики вроде занимается он, если нет - есть gamescope.

Не осилили самим запилить поддержку вяленда - черт с ними, всё равно работает.

token_polyak ★★★★
()
Последнее исправление: token_polyak (всего исправлений: 3)

#3 0x00007f53df990064 in () at >/usr/lib/libretro/play_libretro.so
#4 0x00007f53dfd63084 in () at >/usr/lib/libretro/play_libretro.so

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

iron ★★★★★
()

Детали по бектрейсу не видно, но что-то связано с чтением образа DVD. Возможно, оно хочет распаковать запакованный образ, а файловая система, куда libretro пытается писать, недоступна для записи. Возможно, места просто не хватает. Возможно, образ с повреждениями, и распаковка не завершается успешно. Всё очень похоже на какое-то странное состояние системы, которое у разработчиков вряд ли когда возникало, и поэтому они забыли этот вариант обработать.

Имеет смысл под strace прогнать, чтобы посмотреть, что программа пытается делать непосредственно перед падением. Возможно, там будут какие-то намёки.

i-rinat ★★★★★
()
Ответ на: комментарий от ox55ff

Там кладезь классных игр и очень много игр, где можно играть вдвоём/вчетвером (тогда это была главная фишка Playstation).

Dr64h ★★
()
Последнее исправление: Dr64h (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Есть же debuginfod.

Я тебе в комменте привел строки, где gdb в бектрейсе не смог достать символы из /usr/lib/libretro/play_libretro.so. А следовательно, не узнать в каком именно участке кода ошибка.

iron ★★★★★
()
Ответ на: комментарий от vbcnthfkmnth123

На самом деле сейчас арчепроблемы неактуальны (или наоборот актуальны для всех), потому как и бубунта давно вполне себе роллинг. Нет той самой сокровенной штабильности. Не сидят они нынче на традиционном ядре типа 4.19

rtxtxtrx
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

На самом деле сейчас арчепроблемы неактуальны

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

arch just the installation part i will be like installing it 3 times in a week
Something goes wrong idk how to fix it being lazy to find the solution i just reinstall it.

https://www.reddit.com/r/linux_gaming/comments/18hk0sx/i_want_to_change_my_di... Или вот

Arch based distros are just not stable

https://www.reddit.com/r/linux_gaming/comments/18hc2m7/arch_based_distros_are...

vbcnthfkmnth123 ★★★★★
()
Ответ на: комментарий от i-rinat

Один образ теперь, почему то, перестал падать. Просто черный экран выдает:

poll([{fd=4, events=0}], 1, 0)          = 0 (Timeout)
poll([{fd=15, events=POLLIN|POLLPRI}], 1, 1000) = 1 ([{fd=15, revents=POLLIN|POLLPRI}])
ioctl(15, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0x52, 0x10), 0x7ffd9a5c62b0) = 0
poll([{fd=15, events=POLLIN|POLLPRI}], 1, 1000) = 1 ([{fd=15, revents=POLLIN|POLLPRI}])
ioctl(15, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0x52, 0x10), 0x7ffd9a5c62b0) = 0
ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0x2a, 0x20), 0x7ffd9a5c3a20) = 0
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4, [{iov_base="+\f\1\0", iov_len=4}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 4
poll([{fd=4, events=POLLIN}], 1, -1)    = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\1p9\0\0\0\0\n\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
getpid()                                = 50640
getpid()                                = 50640
getpid()                                = 50640
poll([{fd=4, events=0}], 1, 0)          = 0 (Timeout)
poll([{fd=4, events=0}], 1, 0)          = 0 (Timeout)
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4, [{iov_base="\234\f,\0\0\0\0\0\355\3\0\0\37\0\0\0\0\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=176}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 176
poll([{fd=4, events=POLLIN}], 1, -1)    = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\210q9\0\0\0\0\0\0\0\0\355U\0\0\260\0\0\0\0\0\0\0\177\207\377#\355U\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=22, events=POLLIN}], 1, 0)    = 0 (Timeout)
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4, [{iov_base="+\f\1\0", iov_len=4}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 4
poll([{fd=4, events=POLLIN}], 1, -1)    = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\1r9\0\0\0\0\n\0\0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
getpid()                                = 50640
getpid()                                = 50640
getpid()                                = 50640
getpid()                                = 50640
getpid()                                = 50640
getpid()                                = 50640
poll([{fd=4, events=0}], 1, 0)          = 0 (Timeout)
poll([{fd=15, events=POLLIN|POLLPRI}], 1, 1000) = 1 ([{fd=15, revents=POLLIN|POLLPRI}])
ioctl(15, _IOC(_IOC_READ|_IOC_WRITE, 0x46, 0x52, 0x10), 0x7ffd9a5c62b0) = 0
poll([{fd=15, events=POLLIN|POLLPRI}], 1, 1000^Cstrace: Process 50640 detached

А вот который падает при запуске:
https://pastebin.com/wSnGtWrU

Jaeger1999 ★★★
() автор топика
Ответ на: комментарий от ox55ff

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

Но я видел как играют через эмуляторы, фанаты специально сделали отдельные эмуляторы для ретро игр под PS2.

Кому интересно есть самая большая база данных инфы по играм PS1-PS2 - The Playstation Datacenter.

Dr64h ★★
()
Ответ на: комментарий от Jaeger1999

Просто черный экран выдает

Ну это нормальное поведение для эмуляторов. Нужно смотреть в таблицу совместимости. Возможно, эта игра просто не работает в эмуляторе вообще.

А вот который падает при запуске

Есть небольшой шанс на то, что ему русские буквы в путях не нравятся. Вот это вот: «хобби/видео_игры».

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Есть небольшой шанс на то, что ему русские буквы в путях не нравятся. Вот это вот: «хобби/видео_игры».

тоже так подумал. Но проверил без русских ­— нифига

Jaeger1999 ★★★
() автор топика