Skip to content
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

Fixed crash on iOS 11+ while loading game #55

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

MCJack123
Copy link

An illegal instruction was inside the libcore.a/Jit.o binary that caused the app to crash. I replaced it with a NOP instruction, and the emulator now works while debugging. If you are looking to run this on your device and the pull request hasn't been merged, use my fork and it should work fine. Unfortunately, it does not seem to work when untethered, and I can't figure out why. (I can't debug if debugging fixes it!)

@chocolatecake123
Copy link

chocolatecake123 commented Feb 17, 2019

I pulled your fix and it doesn't seem to work for iOS 11.4 unc0ver or electra jailbreak (that came out recently). When I try to open a game (like Mario Sunshine), it goes white screen for a few seconds then crashes to home screen.

@chocolatecake123
Copy link

For some reason the game does run successfully through Xcode though.

@MCJack123
Copy link
Author

This is a known issue, but I have no idea why it happens. It's because the debugger does something to make the app work, and without the debugger it crashes. Not sure how to fix it since debugging will not reproduce the issue.

@LucasMW
Copy link

LucasMW commented Feb 19, 2019

I don't know if it helps, but I have already experienced this kind of bug in smaller C/C++ projects.
It usually have to do with wrong memory assumptions, such as size of vectors and structs. You see, when debugging, several C/C++ debuggers will allocate more memory than necessary per variable, per struct, per vector, etc. in order to store debug information.
If the program only runs on Debug it might be because of that. Some areas of the code must be accessing invalid memory positions, making the OS force crash the program, but in the Debug, they are still considered the same variable/vector/struct. This is can be actually common in vector indexes, for example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants