When connected to a debugger, things go normal.
When not connected to a debugger, PPSSPP crashes on all my games (tested 4) with JIT enabled. I am sure it is related to JIT because if I change to IR interpreter, things go normal but slow.
Games run normally.
iPad Pro 9.7 (1st generation), iPad OS 14 Public Beta 4, with no Apple developer program subscription (certificates expire after 8 days).
PPSSPP v1.10.3 self-compiled.
I think maybe Apple added some new security restrictions related to JIT. And maybe it is a bug to iOS or a temporary situation. When Apple finally releases iOS 14, I will test again.
Yeah, we've had reports of this before. I think the method we're using to fool it to believe it's running in the debugger is no longer working due to security fixes in iOS 14, and there's likely nothing that can be done about it without a jailbreak.
People have to face that buying apple is a terrible malinvestment instead of expecting devs to subvert the user-hostile security apparatus around their products. If i were you i'd just place a notification with a big fat warning the first time PPSSPP is run on a apple platform that JIT is disabled because of apple's policy against JIT compilation so speed will be terrible and wash my hands off it otherwise.
For some, like people with disabilities, it’s the only choice that allows one to use a phone, or tablet, productively. We just have to do the best we can with AltStore and other such tools. And with the IR Interpreter on my iPhone X R, even on iOS 14, it runs smoothly, unless the phone is under more-than-normal stress.
Devin Prater
d.[email protected]
Https://devinprater.github.io
On Aug 7, 2020, at 12:17 PM, i30817 notifications@github.com wrote:
People have to face that buying apple is a terrible malinvestment.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/hrydgard/ppsspp/issues/13255#issuecomment-670621071, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADUMTTU2I46IKVXUAUE7QC3R7QZIZANCNFSM4PWQIYUA.
I'm gonna close this because I don't think there's anything we can do about the issue. Apple's gonna do what Apple wants to do, today they're blocking the JIT. I'm glad the iOS port is usable at least for people who have no choice.
They’ve added jit support for iOS 14.2 and side loading via alt store also supports jit
@EhsanWaheed Which commit did them actually add JIT support for iOS 14.2?
EDIT: Sorry, I misunderstood it. It is iOS 14.2 that officially supports JIT code. Maybe we can finally support JIT normally on iOS?
Hopefully but I think PPSSPP needs an update to use the iOS JIT as it crashes at the moment
@hrydgard What do you reckon?
I ran JIT on PPSSPP successfully on my iPad mini 5 (iOS 14.2), by simply enabling the "Extended Virtual Addressing" capability in XCode 12.2. It seems that PPSSPP would run on iOS 14.2 normally with no additional modification. Enabling such capability needs an account in XCode and compile PPSSPP manually, whether with Apple Developer subscription or without. If PPSSPP releases a precompiled ipa with such capability enabled, we can also use AltStore or other approaches to sign the package and install on our iDevice.
I guess it’s just a matter of testing and implementation into PPSSPP now . Ah thank god Apple has added JIT support regardless of their reason for the addition of it.
I ran JIT on PPSSPP successfully on my iPad mini 5 (iOS 14.2), by simply enabling the "Extended Virtual Addressing" capability in XCode 12.2. It seems that PPSSPP would run on iOS 14.2 normally with no additional modification. Enabling such capability needs an account in XCode and compile PPSSPP manually, whether with Apple Developer subscription or without. If PPSSPP releases a precompiled ipa with such capability enabled, we can also use AltStore or other approaches to sign the package and install on our iDevice.
Are you sure that the unmodified PPSSPP can use JIT with "EVA capability" on iOS14.2?
I tried many times, however there was no luck. The only case the JIT works was that the X^W JIT while it connected with Xcode to debug. What if there is legal way to execute JIT, Why do we need some ptrace to trick it like it's debugging.
Can you tell me little bit more detail? (used version of sdk or CLT...)
@jeeeyul I just enable the EVA capability, and it works without any special modifications. Did you compile PPSSPP in Release configuration? Some games will crash in Debug mode in this case, but work well in Release mode, while others work well even in Debug mode. Weird enough. Can you compile PPSSPP in release configuration, or try to play more games to see if it will still crash? For me, all the games I tested work well in Release mode (but with some graphics errors, which I have mentioned in another issue).
@xsm1997 Yes, I did use release scheme.
These are what I did:
cmake -DCMAKE_TOOLCHAIN_FILE=./cmake/Toolchains/ios.cmake -DIOS_PLATFORM=OS -H. -Bbuild.ios -GXcode
Extended Virtual Addressing to PPSSPP target.Cmake PostBuild Rules on PPSSPP target since there were some tiny typos that makes manual build failure.Then I build and launch using release without the Debug executable option to simulate running without debugging connection.
These are what I got:
ERR [MEMMAP] vm_remap failed (1) - could not remap from 10b1f8000 (offset 0) of size 4000 to 0x100010000
ERR [MEMMAP] vm_remap failed (1) - could not remap from 10b1f8000 (offset 0) of size 4000 to 0x100810000
ERR [MEMMAP] vm_remap failed (3) - could not remap from 10b1f8000 (offset 0) of size 4000 to 0x101010000
...
With debugging mode, everything did work well.
When I launch the PPSSPP on iPhone itself, I had to see the errors that are exactly same with non-EVA.
Did I miss something?
@jeeeyul could you make a PR or just write some details of the postbuild rules typos you had to fix?
(I'm gonna work a little on iOS soon so would be convenient)
@jeeeyul could you make a PR or just write some details of the postbuild rules typos you had to fix?
(I'm gonna work a little on iOS soon so would be convenient)
I could not find which code generates this script, So I just paste result here:
original post script looks like
#!/bin/sh
set -e
if test "$CONFIGURATION" = "Debug"; then :
cd /Users/jeeeyul/git/[email protected]/ppsspp/build.ios
mkdir -p "$(TARGET_BUILD_DIR)/$(FULL_PRODUCT_NAME)"
tar -c -C /Users/jeeeyul/git/[email protected]/ppsspp/build.ios --exclude .DS_Store --exclude .git assets *.png | tar -x -C "$(TARGET_BUILD_DIR)/$(FULL_PRODUCT_NAME)"
/bin/bash /Users/jeeeyul/git/[email protected]/ppsspp/ios/macbundle.sh "$(TARGET_BUILD_DIR)/$(FULL_PRODUCT_NAME)"
fi
...
Xcode did complain as:
.../Script-32DE914AEA194C56A89D0E77.sh: line 12: TARGET_BUILD_DIR: command not found
.../Script-32DE914AEA194C56A89D0E77.sh: line 12: FULL_PRODUCT_NAME: command not found
.../Script-32DE914AEA194C56A89D0E77.sh: line 13: TARGET_BUILD_DIR: command not found
.../Script-32DE914AEA194C56A89D0E77.sh: line 13: FULL_PRODUCT_NAME: command not found
So I did replace all the command expressions to variable expression ($(...) → ${...}):
#!/bin/sh
set -e
if test "$CONFIGURATION" = "Debug"; then :
cd /Users/jeeeyul/git/[email protected]/ppsspp/build.ios
mkdir -p "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}"
tar -c -C /Users/jeeeyul/git/[email protected]/ppsspp/build.ios --exclude .DS_Store --exclude .git assets *.png | tar -x -C "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}"
/bin/bash /Users/jeeeyul/git/[email protected]/ppsspp/ios/macbundle.sh "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}"
fi
...
Thanks for your contribution!
Thanks, that will probably save me a few minutes of troubleshooting :)
Most helpful comment
I guess it’s just a matter of testing and implementation into PPSSPP now . Ah thank god Apple has added JIT support regardless of their reason for the addition of it.