-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[libretro] android 32-bit version crashes at startup #12464
Comments
That log was from a shield portable
This is from a different device. I didn't get those DT entry errors in this one, but I noticed this again
first thing that gets done is jni_thread_destruct. I had never seen that, I'll ask the RA guys |
Ok, it's the threaded video driver, makes no difference though |
Hi fr500, I'm having the exact same problem. on android 32bit device. |
Same here https://forums.libretro.com/t/ppsspp-crashing-at-launch/25039/8 my android is also 32-bit along with retroarch |
@fr500 Is it still an issue ? |
its still an issue: For the record i have tried: copy contents to folder suggestion orignally there was no folder the retroarch system directory so had to create a folder called PPSSPP to copy contents to from archive ppsspp-master\assets the retroarch directory was on the root of the internal directory. the run-ahead + rewind setting is already disabled on retroarch use the online updater to download and extract the retroarch assets.zip Anyway none of these suggestions have worked I am currently use a device on android 6.0 (32-bit) and device samsung exynos octa 7870 (8x ARM Cortex-A53 @1.59ghz) Running the latest version of retroarch, the standalone ppsspp works fine |
@GITEMUFAN11 may you try to get some log with Here is the log I could get using RA 09/12/21 on Nexus 4
Thank you. |
SIGILL should mean an illegal opcode. Maybe retroarch is compiling with parameters for armv7s or otherwise the wrong arch? That phone should've had NEON etc., so not sure what else it could've miscompiled. If you turn off jit, does it work fine? -[Unknown] |
I don't play on my phone (an "old" Samsung Galaxy A5 2016, Android 7 32bit) so never really cared about this, but while trying to reproduce an issue today I got that crash on startup. Switching to "Interpreter" didn't change anything unfortunately. The weird thing is that it worked once, then it always crashed on the next boots and I have no idea why, I deleted the config and save folder for the core to make sure it was starting fresh again but nope, I can't make it boot again for whatever reason :/ I rebooted my phone too, didn't help. Standalone works fine. |
I had this problem in my NVIDIA Shield but not in another device so I started digging until I reached a point where someone with more inside knowledge can help. In summary, juts to help understand this full comment:
Now the details: The crash is random, but it is always in the same place, it looks like some sort of memory corruption that just depends on the initial state of the memory, that may explain why in other devices it seems to always work, whilst in the Shield it crashes most of the time, but not always. Using ndk-stack I found that the crash is right here:
Switching to Interpreter doesn't change anything because for some reason it still uses JIT (that may be another bug). Checking the source and adding some trace inside that function, I found that there is nothing inside that function that causes the crash, it is the entry point of the function that causes the crash! So it seems that when the core is starting to run the MIPS code for the fist time, that area has a problem. I added some traces to see when that area is corrupted but I didn't find any change. I also compared the contents of that area with the device that works fine and they are the same. This is a sample of my trace/dumps (memory locations will change)
The area dumped is where MIPSComp::JitAt() is, which is basically
The part that crashes with SIGILL / ILL_ILLOPC is the second line
The logs that I added inside MIPSComp::JitAt() show me the contents of the MIPS PC register and I can see that in the machine that I have no problems the fist trace has PC=08804124, the same value that I can see here
But, when the Shield crashes, it never reaches that point, it crashes when trying to execute the first line of MIPS code I wanted to add the DUMP exactly before calling JitAt() but I haven't been able to find that code. I have only found when the function is referenced, but that's not where it is being called. Here I think someone can ring a bell, jump in or explain how that part works so I can continue working on it This is the reference in Core/MIPS/ARM/ArmAsm.cpp, but that's not the function call as I can see.
I added the patch with my DUMP code just in case. Thanks |
Here is an additional thought:
Could it be that the SP register has a wrong value when arriving to this part of the code? |
The libretro core is so broken right now that fixing this is not worthwhile
right now
…On Thu, Apr 14, 2022 at 6:58 PM Franco Catrin ***@***.***> wrote:
Here is an additional thought:
The backtrace of this crash always shows the current frame but not the
previous frames. Typically on these crashes one can see the full stack
trace from the core, then retroarch and finally dalvik, here instead the
containing frame points to anything.
#1 pc fffffffd <unknown>
Could it be that the SP register has a wrong value when arriving to this
part of the code?
—
Reply to this email directly, view it on GitHub
<#12464 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AANEFUC5J6BBT5C6LA5HLPLVFCWK7ANCNFSM4JINXE2Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
What happens?
Content crashes on content load
What should happen?
It should work
What hardware, operating system, and PPSSPP version? On desktop, GPU matters for graphical issues.
Android, 9a5766b on a Shield Portable and on Shield ATV running the 32 bit version of RetroArch.
64-bit variant on the same commit is fine.
The text was updated successfully, but these errors were encountered: