Bad bugs with Xcode 4.4/4.5
Bad bugs with Xcode 4.4/4.5
- Subject: Bad bugs with Xcode 4.4/4.5
- From: Shane Stanley <email@hidden>
- Date: Thu, 04 Oct 2012 14:36:07 +1000
There are a couple of serious issues with garbage-collected apps compiled with Xcode 4.4/4.5 that people should be aware of if they want them to run under OS X 10.6.
First, there's a crashing bug if you show an open or save panel (not via normal AS commands, but using NSOpenPanel or NSSavePanel), or use threaded animation on a progress bar, and possibly in other cases. The result is a crash that usually includes something like this:
Thread ?? Crashed:
0 com.apple.AppKit 0x00007fff828ed9de -[NSImage _allocAuxiliaryStorage] + 158
1 com.apple.AppKit 0x00007fff82a71f05 -[NSImage copyWithZone:] + 66
Second, there's a bug where apps continue to work, or partly work, but messages like this are logged in Console:
objc[201]: GC: 0x10029cf20 + 24 isn't in the auto_zone, break on objc_assign_ivar_error to debug.
objc[201]: GC: 0x10029cf20 + 8 isn't in the auto_zone, break on objc_assign_ivar_error to debug.
objc[201]: GC: 0x10029cf20 + 64 isn't in the auto_zone, break on objc_assign_ivar_error to debug.
At some stage, the app might crash. I've also seen symptoms like text entered into a table cell disappearing when the enter key is pressed.
Both the above problems happen only in 64-bit mode.
There appear to be a few workarounds:
* If you're running OS X 10.7 or earlier, go back to Xcode 4.3.3 or earlier.
* Compile as 32-bit only. This probably isn't a great idea.
* Compile as 64-bit/32-bit, and set it to run 64-bit only under OS X 10.7 only.
To do the latter, you need to add an entry in the Info tab for your target. However, there's a bug in Xcode 4.5 that makes adding a new entry here difficult; the Add Row contextual menu doesn't work, neither do the + symbol buttons properly, and if you fiddle with it it's easy to end up with lots of irrelevant entries, or worse, none at all.
The entry that needs to be added has the key "Minimum system versions, per-architecture", and by default it contains a single dictionary. You should change this dictionary to have a key of "Intel (64-bt)" and a value of "10.7". This will ensure the resulting binary will launch as 32-bit under versions of the OS before 10.7 (provided you have compiled 64-bit/32-bit).
To get around the Info tab bug, you can instead edit the file called <Project name>-Info.plist, which is usually in the Supporting Files group. Control-click on it in the File Navigator and choose Open As... -> Source Code in the contextual menu. Paste in the following entry:
<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>x86_64</key>
<string>10.7</string>
</dict>
It doesn't matter where you insert it, as long as it isn't in the middle of some other key-value pair. If you later modify an entry in the Info tab it will be moved (to alpabetical order) anyway.
--
Shane Stanley <email@hidden>
'AppleScriptObjC Explored' <www.macosxautomation.com/applescript/apps/>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
applescriptobjc-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden