This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
(edit, 7 hours later:) With not a single person reporting any issues with this update, I have pushed it live to my production repository. Thank you all so very much for the help testing this update!
(edit, 10 hours total:) Some people are reporting some kind of issue with these updates and the Apple Watch. I'm looking for more information on the problem. See this thread on this subreddit.
Hello! So, one of the bigger issues that has been affecting people with the iOS 8.3 jailbreak so far is that sometimes you find yourself in a situation where SpringBoard no longer has any system applications, including Cydia. This happens because of a new check in installd that is incompatible with Cydia's "Reorganizing Filesystem" step. I actually had reason to believe that this would be an issue for iOS 8.3, and had TaiG given me even an hour of notice I would have just deactivated stashing that folder for the iOS 8.3 build of Cydia to buy time :/.
Instead, what TaiG did is to "wrap" my uicache with their own tool that used a risky feature of Substrate that I don't expose as ABI (and believe I designed the TUI for poorly, by the way) to inject code into installd that seems to replicate a ton of the application scanning logic "just so" in order to make it work... but that only was possible if SpringBoard scanned the icons because of uicache. If there was any other reason SpringBoard scanned the icons (maybe due to someone deleting the icon cache) then SpringBoard would lose icons.
For TaiG 2.1.x, I was frantically working on a fix, but my fix was not quite right: TaiG found an instance where the solution didn't work in their testing. FWIW, I think a big reason for this is that I had been up for 26 hours working on this issue after having gotten only five hours of sleep in 0.5-1.5 hour shifts after having been awake the previous "day" for 28 hours (which included six hours of me driving in a car from San Francisco down to Santa Barbara). I was at the stage where I was using all of my energy just to stay awake to talk to them.
Meanwhile, they somehow believed that the overall issue was newish in 2.1.0... but really, this was a classic case of "people installing the early leak of the 2.1.0 untether were the first people to do a lot of complex things, including larger numbers of reboots via Cydia, as well as to start installing software that would mess with the icon cache" (essentially, the same thing that plagues peoples' attempts to discern cause/effect relationships and leads to any number of unrelated bugs being "caused" by a small handful of core packages like WinterBoard).
They actually wanted to release my broken fix, but the problem is that my fix was 1) clearly not a good fix and 2) was a complex fix that, if I came up with something better later, would be somewhat difficult to "roll back". (In fact, at this point, I hadn't implemented any form of uninstallation procedure: the fix was essentially a permanent modification.) I tried to explain to them the problems with throwing more and more fixes at things: that as you accumulate more and more possible setups and all subsequent fixes have to work around earlier ones.
They ended up releasing 2.1.2 with an attempt to make the bug happen less often, which was actually a reasonable one: instead of doing remote code injection into SpringBoard at the time of uicache, they threw their reimplementation of icon scanning into installd as a normal Substrate extension, which made it much harder for users to run into scenarios where the icon cache had been destroyed but somehow a copy of installd was running that had not been modified: all instances of installd were modified as soon as they are run by Substrate.
However, this isn't a true fix for the problem: if you have an issue with an extension and your attempt to fix everything involves running a cache cleaner followed by rebooting with Substrate turned off (by holding volume up), then installd will rebuild the icon cache using the unmodified algorithm and you lose all your icons. Some users also like being able to uninstall Substrate temporarily to remove all the things they have installed and the first thing that happens after any package modification is an icon cache rebuild, so this "normal behavior" again fails.
After getting some rest (I went to sleep for five hours and then spent some time with the Okori Group to clear my head and think about some other things for a few hours) I went back to the icon mines and spent the next night cycle coming up with a fix I thought "actually worked". I also came up with a new installation strategy that would upgrade people from TaiG 2.0.0 (which had the TaiG UICache package) up to now, and built out an uninstallation mechanism for the new code I had added. I was just waiting for TaiG to test this new solution.
Sadly, they seem to have already moved on to other things, and so for the last 24 hours that I've been hoping to get some of their time to look at this issue again I keep getting pushed forward by a few more hours. I really wanted them to test these packages, because they had a testing protocol (involving a usage of Cydia's AutoInstall, a feature I never use and most people in the US never think about) that led to a concrete failure. I finally just now asked them if I should instead be doing an "open beta", and they seemed to think that I should.
So, I've taken the packages that I was hoping to release and uploaded them to a new repository URL that users--preferably only those who have their data backed up and would not mind having to restore if things go badly--can add to Cydia to get the upgraded packages. This includes an upgrade to uikittools, ldid (I have built a new version that no longer requires codesign_allocate), an empty replacement for the TaiG uicache package (that people using TaiG 2.0.0 have installed), and a new dependency called Patcyh that includes the actual solution.
http://apt.saurik.com/beta/uicache-8.3/
The one thing to point out is that this upgrade sequence does not also remove the TaiG uicache fix that was injected via Substrate. As far as I can tell, there is no incompatibility between their fix and my fix, so this will wait to get cleaned up by the next release of the TaiG untether (and I do believe there will be another one coming up in the near future). To do a true test though, also requires using something like iFile to delete the TaiG fix from your folder of Substrate extensions and to then reboot your device. The exact filename to delete is as follows.
/Library/MobileSubstrate/DynamicLibraries/uicache83x.dylib
(For anyone wondering: this is the reason I haven't started selling people products for iOS 8.3 yet. The experience "ok, I'm going to jailbreak my device, spend $10 buying things for it, and then an hour later my phone is broken and I'm unhappy" is not something I want to encourage. I generally only turn on payments for a new version of iOS when I consider the jailbreak "stable" and the core platform pieces, such as PreferenceLoader, have been updated. I hope that we can get to that point for the TaiG iOS 8.3 jailbreak as soon as possible.)
Subreddit
Post Details
- Posted
- 9 years ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/jailbreak/c...