As many of you know, I've been suffering with ALoD (Apple Logo of Death) issues since July 11th. I've finally discovered the root cause of this problem, as well as a solution. I'm pasting a quote below from "Mandrake" on another forum which explains in some detail why this problem occurs, how it actually can affect ANYONE running 2.0 software, and how jailbreaking is the only known way to recover.
After suffering through 40 restores (due to ALoDs) between July 11th and August 15-ish, I haven't had to do a single one since - the reason? I finally got up the nerve to PWN my new iPhone 3G. With OpenSSH installed, recovering from an ALoD event takes just a few minutes, with no data loss or settings lost, nothing - it's VERY easy.
Ironic, isn't it? The only way to avoid having to spend 3-4 hours restoring your phone every time an ALoD occurs is to jailbreak. Put another way: in this situation, the only way to have a functional phone is to void the warranty.
Good job, Apple.
Mandrake said:This is the problem where after a crash or restart during app install/update/uninstall the device will get stuck on the Apple (or pineapple ) boot screen and either spontaneously reboot after a while, or "freeze" requiring a two fingered reboot. On my ipod touch when this freeze occurs the display dims to half brightness and the unit is no longer pingable over wifi.
Usually you get stuck in a loop where no amount of forcibly rebooting will recover the device and you have to restore.
Here's the explanation: When the 3rd party application state changes, Springboard "regenerates the application map" which you can see clearly if you watch the system log with the iPhone Configuration Utility.
(Available here: http://www.apple.com/downloads/macos...formacosx.html )
This can take some time. The more and/or bigger applications you have installed, the longer this takes. This regeneration process happens ANY time a change to installed applications occurs.
Here's the problem - Springboard is watched by a watchdog process which is handled by configd. The location of the watchdog and it's configuration files is /System/Library/SystemConfiguration/mobilewatchdog.bundle
The watchdog constantly monitors Springboard, and if it doesn't respond at least once every 2 minutes, it is killed and forcibly restarted. If this happens approximately 4 times, the watchdog will attempt to reboot the device, but it usually just freezes the system with the half brightness apple logo.
The problem occurs when the number and/or size of applications installed causes a regeneration of the application map to take longer than 2 minutes - it becomes impossible for Sprinboard to complete the task before it is forcibly killed by the watchdog. It will try again the next time and run out of time and be killed again. Hence stuck at the boot screen until doing a restore.
It is unbelievable that Apple allowed this design flaw, yes design flaw, not bug go out into the wild and it still hasn't fixed it in 2.0.1. Clearly the watchdog arrangement was put in place before 3rd party application support, and none of the programmers considered the possibility of Springboard taking more than 2 minutes to regenerate the application map.
So, how to recover from being stuck at the apple logo without doing a full restore wiping everything ? If you have openssh installed so you can log in remotely you can fix it quite easily, as you get nearly 2 minutes of ssh access during the apple logo before the system freezes where you can log in for "emergency surgery".
If you don't have OpenSSH already installed then sorry, it's restore time...
As the device is trying to boot up but still at the apple logo, try to log in as root using ssh. You should find you are able to log in soon after the device is pingable on your wifi network, and you have a few minutes to complete the following steps in time.
For example from a mac, log in with:
ssh -l root 192.168.1.103
Where your iphone/ipods own ip address is substituted.
First we will disable the watchdog timer (by temporarily moving its files elsewhere) and then reboot:
mv /System/Library/SystemConfiguration/mobilewatchdog.bundle/ /
reboot
After a few seconds the device will start to reboot, and after approximately 3-6 minutes (depending on how many apps you have installed) you will reach the lock screen as normal, when that happens we now have to re-enable the watchdog timer, and reboot again, so again log in with ssh, and type:
mv /mobilewatchdog.bundle /System/Library/SystemConfiguration/
reboot
You should find your iphone / ipod touch will reboot normally a second time.
The reason this is a workaround is because you CAN'T leave the watchdog disabled, because as well as monitoring Springboard and killing/restarting it, the watchdog also has to periodically reset the HARDWARE watchdog, if this doesn't happen the device will spontaneously reboot. The hardware watchdog is 10 and a bit minutes, so without the watchdog installed and working your device will reboot itself every 10 minutes.
If anyone knows how to contact or draw this message to the attention of the dev team I have an idea for a simple patch that they could apply to the watchdog as part of the Pwning process (or as a Cydia package) that would for all intents and purposes solve this problem until Apple gets around to fixing it properly. Please send me a PM.
Note: This same issue is the reason why after installing apps with Cydia the system will sometimes freeze. As far as I can tell Cydia is NOT to blame - what Cydia does is tells Springboard to regenerate the application map, and it is that application map regeneration that triggers the problem - Springboard becomes unresponsive for extended periods of time, the watchdog process starts trying to kill Springboard, and all hell breaks loose...this procedure will also recover from that situation.
The reason Installer.app doesn't trigger this problem is it doesn't tell Springboard to regenerate the application map - it just kills Springboard and allows it to launch again.
After suffering through 40 restores (due to ALoDs) between July 11th and August 15-ish, I haven't had to do a single one since - the reason? I finally got up the nerve to PWN my new iPhone 3G. With OpenSSH installed, recovering from an ALoD event takes just a few minutes, with no data loss or settings lost, nothing - it's VERY easy.
Ironic, isn't it? The only way to avoid having to spend 3-4 hours restoring your phone every time an ALoD occurs is to jailbreak. Put another way: in this situation, the only way to have a functional phone is to void the warranty.
Good job, Apple.