-
Notifications
You must be signed in to change notification settings - Fork 98
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
Springboard crash #74
Comments
Date: 10/05/2022, 3:15 AM Exception type: NSInternalInconsistencyException Call stack: Loaded images: {"NSExceptionReason":"Invalid parameter not satisfying: gestureRecognizer","ProcessBundleID":"com.apple.springboard","ProcessName":"SpringBoard","Culprit":"carplayenable.dylib"} |
Could it be possible that by using UIKit as the only bundleID in the filter, that you are getting preferences leaking into other processes, or even active hooks that aren't meant for making changes there? I remember that was (maybe still is) an issue when using Cephei for defaults on system wide tweaks, and a good fix was a simple filter written inside the %ctor checking if it was an app, SpringBoard,a fileProvider or something the tweak needed access to, and if not it skipped the entire settings, callbacks and %init so basically it never got injected. I have only browsed at the code on here looking for reasons why I couldn't get the tweak to work at all for me, and today it dawned on me that for the tweaks I made to work on CarPlay, I use different filters then you, (even though the tweaks hook things from both SB and UIKit)I don't use UIKit in the filter since it is imported by nearly everything,and the hooks still work on SB/UIKit and on CarPlay. Anyways, I changed the mobileSubstrate/DynamicLibraries/carplayenable.plist to include CarPlay, CarPlayUI, and a templateHost it uses, and after doing an ldrestart suddenly the tweak worked perfectly. (I didn't remove UIKit yet but am about to, and test to see if that fixes overall performance and possibly solves this issue.) This is my current carplayenable filter in $(PATH_DYLIBS)/DynamicLinraries/ |
The UIKit filter is required because the tweak needs to be injected into arbitrary applications for window resizing purposes. Since I last worked on this tweak, I think tweak loaders no longer include some/all system processes when using a UIKit filter, resulting in carplayenable not being injected into the CarPlay process Edit: it looks like my last commit was adding explicit filters 696bc72 |
@saeedbalkhair I don't know the root cause, but the issue you're having is that the app's scene (what you interact with) is immediately invalidated after CarPlayEnable creates it. The crash happens because CarPlayEnable is trying to remove a gesture recognizer during scene teardown but the gesture recognizer wasn't actually created yet; the scene was invalidated before it could be created. I will address the gesture recognizer crash but I don't think it will entirely fix the problem you're having |
@EthanArbuckle Yeah I realized after writing (and pathetically testing without it) that without UIKit many apps would lack resources they need access to, to work. Anyways could the gesture recognizer issue be from CarPlay expecting it to be set up and tore down by CarPlayTemplateUIHost or CarPlayUI and one or both might be missing from the UIKit umbrella? Adding those made the tweak work perfectly for me. A few very minor issues but some are conflicts I'm finding. |
the carplay processes are not really involved with app presentation here, i think I only hook into it so that I can make extra icons appear on the Carplay screen. SpringBoard is responsible for remotely rendering app scenes on the Carplay screen I noted in my comment above that the gesture crash seems to be a side effect of that device killing scenes immediately; i don't know why that's happening. I ingest all crash logs produced by this tweak automatically; i'll try to find some time this weekend to triage them and identify if this specific crash is a common occurrence. |
No worries. I've been monitoring CocoaTop when using it, to see if any processes are getting overloaded, and using multiple apps that work together using midi, audio units and Ableton Live and when having a large CPU load is the only time it seems to like to crash or go to safe mode. I was suspecting maybe jetsam limits might be playing a role, but I noticed it crashes usually when leaving an app, like it's wanting to background and it's closing the app forcefully instead. I don't have my logs to look at tho because my memory is getting full and I keep using iCleaner. I'm going to take more time looking at the source code, and any crash logs I get once I transfer some large files off of here. But I have several tweaks running on CarPlay that only include UIKit and they work, without hooking anything from the CarPlay framework specifically. They just seem to work better when CarPlayUI and the templateHost are included in the filter for some reason. |
Describe the bug
Sudden springboard crash
To Reproduce
Steps to reproduce the behavior:
1.run an app on carplay screen
Expected behavior
Springboard crashes to safemode everytime reproducing behavior
Screenshots
If applicable, add screenshots to help explain your problem.
iOS Version (please complete the following information):
Additional context
Add any other context about the problem here.
I pasted the crash report in comments do to character limitation.
The text was updated successfully, but these errors were encountered: