« Internet Kompetenz Kompetenz |  main  | iPhone »

iPhone crash log information

Posted by dom on Sat Jun 30 22:17:17 +0200 2007

Apparently when an app on the iPhone crashes, the phone notices after 30 seconds, writes out a crashlog and continues to work. On next connect with iTunes it wants to post the crashlog.

The contents of these crashlogs are interesting, as Frasier Spears already noted and found out.

So far I have found 2 crashlogs on the net. One at Daring Fireball and one at Martin Gordon – I think there will be more soon.

Here are the “Headers” of the two logs found up to now:

Process:         MobileMail [67]
Path:            /Applications/MobileMail.app/MobileMail
Version:         N/A (N/A)
Code Type:       0000000C (Native)
Effective UID:   0
Parent Process:  SpringBoard [15]

Date/Time:       2007-06-29 20:42:06.479 -0400
OS Version:      OS X 1.0 (1A543a)
Report Version:  6

Exception Type:  00000020
Exception Codes: 0x8badf00d
Crashed Thread:  Unknown
Process:         Preferences [73]
Path:            /Applications/Preferences.app/Preferences
Version:         N/A (N/A)
Code Type:       0000000C (Native)
Effective UID:   0
Parent Process:  SpringBoard [15]

Date/Time:       2007-06-29 20:27:24.929 -0400
OS Version:      OS X 1.0 (1A543a)
Report Version:  6

Exception Type:  00000020
Exception Codes: 0x8badf00d
Crashed Thread:  Unknown

Both crash logs look almost identical, both don’t know which thread crashed and both have the funny exception code of “badfood”.

Let us compare this to a standard Mac OS X Tiger crash log:
Host Name:      dom
Date/Time:      2007-02-08 15:48:36.933 +0100
OS Version:     10.4.8 (Build 8N1037)
Report Version: 4

Command: SubEthaEdit
Path:    /Appications/SubEthaEdit.app/Contents/MacOS/SubEthaEdit
Parent:  WindowServer [96]

Version: 2.6 (2043M)

PID:    414
Thread: 0

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_INVALID_ADDRESS (0x0001) at 0x73617283

So we can see there is no explicit PID mentioned on the iPhone, instead it is displayed in brackets behind the Process information (which seams consistent with the way it always was displayed for the parent process. The Report Version has bumped from 4 to 6. Also the OS Version scheme is different, although similar. It is not 10.something but OS X 1.0 – the running build number (1A543a) seems to be a similar scheme than the build number on tiger (Build 8N1037). The Parent Process for the Apps is the “SpringBoard” which seems to replace the “WindowServer” on Tiger. The Version of the current App seems N/A always – the Path to the binary seems to have lost a “Contents” which was quite superfluous anyway and is a old relic from next times that I never understood. Maybe they thought they would put metadata in the space between the .app folder and the Contents Folder… The “Effective UID” field is new, but filled with 0 doesn’t tell us much. Also new is the “Code Type” field – in which (native) would suggest that there may be other values which are not native…

Since we have no symbols I skip the thread part. After the thread part however, interestingly enough, there is no thread state in the logs, so no deducing of the CPU because of the displayed contents of the registers. The only text we get is:
Unknown thread crashed with unknown flavor: 4, state_count: 1
Moving on – The binary images list has a different format on the iPhone:
0x301c7000 - 0x301d4fff  AddressBook UUID (7D1B2DA0EC1D4A1382D5FE0B91851ACA) /System/Library/Frameworks/AddressBook.framework/AddressBook
0x94726000 - 0x9486cfff com.apple.AddressBook.framework 4.0.4 (485.1) /System/Library/Frameworks/AddressBook.framework/Versions/A/AddressBook

So instead of version numbers we now have UUIDs, the reverse DNS name syntax seems to have gone, and the complicated linked structure of the framework bundles also seems to have gone.

I want to close with the list of library/framework names which don’t appear on Tiger:
AddressBookUI UUID (0E6FBEAA0D9C411FB1F0794F35D2CFBA) /System/Library/Frameworks/AddressBookUI.framework/AddressBookUI
AppSupport UUID (4D84C1C39C7C4DB9981FEBF8E48FF450) /System/Library/Frameworks/AppSupport.framework/AppSupport
BluetoothManager UUID (E00ECB53D4B5426A818DA8D77CD1B09C) /System/Library/Frameworks/BluetoothManager.framework/BluetoothManager
Calendar UUID (5D3EB213B2A94C4C97C194283493122C) /System/Library/Frameworks/Calendar.framework/Calendar
Celestial UUID (15045615F83249D49720253EBDF9132A) /System/Library/Frameworks/Celestial.framework/Celestial
CoreSurface UUID (7280076DC074497CB145741A15FCE472) /System/Library/Frameworks/CoreSurface.framework/CoreSurface
CoreTelephony UUID (7B909435DABA409098995CC24EE26587) /System/Library/Frameworks/CoreTelephony.framework/CoreTelephony
GraphicsServices UUID (1C4876C189F34562ACF6B7D44770FF97) /System/Library/Frameworks/GraphicsServices.framework/GraphicsServices
IAP UUID (C298EEA4A51040D1959591C364206B54) /System/Library/Frameworks/IAP.framework/IAP
IOMobileFramebuffer UUID (AE80733EB6514BB88A6287971C7E09C9) /System/Library/Frameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer
ITSync UUID (B02A31E7730A46BCA6B336F097D542C4) /System/Library/Frameworks/ITSync.framework/ITSync
LayerKit UUID (B9468BD4F4F041C3ADA50B830305E7A2) /System/Library/Frameworks/LayerKit.framework/LayerKit
MBX2D UUID (1583F2C2C78B4058BD8C1DF338738C05) /System/Library/Frameworks/MBX2D.framework/MBX2D
MBXConnect UUID (B5E73A95A84E4706A922D56674D4809D) /System/Library/Frameworks/MBXConnect.framework/MBXConnect
MeCCA UUID (5031D4A8F03B4605A6233D351EF790E0) /System/Library/Frameworks/MeCCA.framework/MeCCA
MessageUI UUID (ED6F6EA00B1346BEB98F00733C936922) /System/Library/Frameworks/MessageUI.framework/MessageUI
MobileBluetooth UUID (5F13101DF17B442D8DE5CD0BDB50D7AB) /System/Library/Frameworks/MobileBluetooth.framework/MobileBluetooth
MobileMail UUID (8859A31CE4874DF1AE2A9A92B1B717A5) /Applications/MobileMail.app/MobileMail
MobileMailSettings UUID (C7B98C13676647FA9A1A6D9DE36897E2) /System/Library/PreferenceBundles/MobileMailSettings.bundle/MobileMailSettings
MobileMusicPlayer UUID (C3D3AC1CC6384FDDB34D1D2D0A7E90F0) /System/Library/Frameworks/MobileMusicPlayer.framework/MobileMusicPlayer
MusicLibrary UUID (B9815425F5D742CD9B9FFF948A4E590D) /System/Library/Frameworks/MusicLibrary.framework/MusicLibrary
OpenGLES UUID (3405A88B732E4DF3A127E182483D9E69) /System/Library/Frameworks/OpenGLES.framework/OpenGLES
Preferences UUID (26FA104E4D88438285B988DDADDE39D6) /System/Library/Frameworks/Preferences.framework/Preferences
Preferences UUID (8E1045DED5F040138101BCE1C4C06AEC) /Applications/Preferences.app/Preferences
TelephonyUI UUID (15006830A8B94F7590AC10CBB664D0E7) /System/Library/Frameworks/TelephonyUI.framework/TelephonyUI
UIKit UUID (8A129F9979114365B637E144A3C67868) /System/Library/Frameworks/UIKit.framework/UIKit
URLify UUID (54B6437BCD3A452F9CC7493CB9E010FF) /System/Library/Frameworks/URLify.framework/URLify
liblockdown.dylib UUID (30A0EB0C05724FA487617B860E360B88) /usr/lib/liblockdown.dylib

That’s all for now :)

Update: Engadget identifies the processor used as an 620MHz ARM1176JZF which seems to contain the ARM Jazelle for embedded java execution. So the Code Type counterpart might be Java Byte Code.

5 responses to 'iPhone crash log information'

  1. Finally, J2ME could arrive to the Mac! :-) I could get rid of Parrallels & Debian! Yipiiiiieeeeh!

    Well, it’s just a dream….

  2. It’s not just “bad food,” it’s “ate bad food”

  3. @yes: Of course. How could I have overlooked that? Thanks!

  4. So we can see there is no PID mentioned on the iPhone.

    Maybe it’s too early in the morning for me and I’m missing something obvious, but…

    Process: MobileMail [67] Parent Process: SpringBoard [15]


    Process: Preferences [73] Parent Process: SpringBoard [15]

    Aren’t 15, 67 and 73 PIDs? (If not, what are they?)

  5. @Sören: Yeah, that seem to be the PIDs. I’ll meant no explicit mentioning of the PID, as in the old crash log format. I will change that. Thanks!

write a comment.... (textile enabled)