libretro / LRPS2

GNU General Public License v2.0
159 stars 47 forks source link

(Feature Request) Backport from standalone. #175

Closed GABO1423 closed 2 years ago

GABO1423 commented 2 years ago

A recent PR by DuckStation developer Stenzek for standalone PCSX2 deals with crashes on 64 bit builds that are caused by exiting the recompliers in any way. Since the core is based on the 64 bit version, and it also crashes when using the Close Content option (which would cause the recompilers to be closed), could this potentially fix that issue? Here's the link to the PR in question: https://github.com/PCSX2/pcsx2/pull/4822

Thanks for reading.

inactive123 commented 2 years ago

Backported it here on this branch - however, the zombie process on exit still remains on Windows -

https://github.com/libretro/pcsx2/tree/fastjmp

@SeventySixx @covey-j Perhaps we can revisit the previous attempts we made at fixing this that seemed to somehow work for Linux but not for Windows? Maybe in combination with this it would work?

GABO1423 commented 2 years ago

Backported it here on this branch - however, the zombie process on exit still remains on Windows -

https://github.com/libretro/pcsx2/tree/fastjmp

@SeventySixx @covey-j Perhaps we can revisit the previous attempts we made at fixing this that seemed to somehow work for Linux but not for Windows? Maybe in combination with this it would work?

I'll see how this affects Close Content on Xbox. Thanks for this @twinaphex!

GABO1423 commented 2 years ago

When trying to make a build, I got these errors:

iR5900-32.obj : error LNK2019: unresolved external symbol fastjmp_set referenced in function "void __cdecl recExecute(void)" (?recExecute@@YAXXZ) [C:\Users\moraz\Downloads\pcsx2\build\pcsx2\pcsx2_libretro.vcxproj]

iR5900-32.obj : error LNK2019: unresolved external symbol fastjmp_jmp referenced in function "void __cdeclrecExitExecution(void)" (?recExitExecution@@YAXXZ [C:\Users\moraz\Downloads\pcsx2\build\pcsx2\pcsx2_libretro.vcxproj]

C:\Users\moraz\Downloads\pcsx2\build\pcsx2\Release\pcsx2_libretro.dll : fatal error LNK1120: 2 unresolved externals [C:\Users\moraz\Downloads\pcsx2\build\pcsx2\pcsx2_libretro.vcxproj]

Any ideas?

EDIT: Errors were fixed by adding the FastJmp.asm file to common/src/Utilities directory.

inactive123 commented 2 years ago

Ah my bad, I forgot to commit it to the branch.

GABO1423 commented 2 years ago

Anyways, with that file added in, I tested the build and it does not longer crash on Close Content.

inactive123 commented 2 years ago

Hmm, guess it doesn't help the zombie process issues on Windows. But I guess it can't hurt to merge it.

inactive123 commented 2 years ago

So I merged this, and I tried doing this again after the merge -

https://github.com/libretro/pcsx2/pull/83/commits/88f81264f256a6a058d2134a219ddcad838dd081

What happens then on Windows with a game like Tekken Tag is that it just crashes upon returning back to RetroArch (Quick Menu -> Close Content). So yeah, no zombie process but no RetroArch either anymore and a hardcrash, which is also equally as bad.

GABO1423 commented 2 years ago

I think the Zombie process issue asks for a separate issue altogether, but since the commit was successfully backported, I think this issue can now be closed.