Shameless plug: If you are shooting tethered, I recommend you to check out Kuuvik Capture, an app that I wrote for Kuuvik Digital. It’s light years ahead of EOS Utility. You can find my posts related to the app here.
October 10, 2012: Canon has released EOS Utility 2.12.0, which resolves the problem. You can download it from here.
September 24, 2012: both applications produce the exact same behavior on the latest OS X 10.7.5 update. So now Lion users are also affected.
Let’s begin with the hard facts: Canon’s latest EOS Utility (2.11.4, released a week before the public 10.8) crashes on Mountain Lion each every time I connect my 5D Mark III. The version I got with the camera on the included CD (2.11.0) works just fine. Also, the current version of the app works fine on Lion.
Moreover, the CaptureCoreServer component in Capture One 6.4.3 is also crashing every time I connect the camera. This happens periodically, as the main app tries to restart the just crashed server.
Phase One states in the 6.4.3 release notes that new features are (among others):
- Added support for Mac OS X 10.8 Mountain Lion.
- Tethered support for Canon 1D X and 5D Mark III.
It seems that Phase One has serious issues with their quality assurance department (nobody ever tried this setup, they just blindly released it). Which is a bad thing for such an expensive software.
Being really upset with these I decided to do a little private investigation on my own. I’m a developer, so the goal was to at least identify who is responsible for screwing things up so badly. From the crash logs I was able to quickly identify a component named “com.canon.edsdk”, which lives in the EDSDK framework. The following is a prettified excerpt from the crash log:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libobjc.A.dylib objc_msgSend + 27 1 libobjc.A.dylib (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 490 2 com.apple.CoreFoundation _CFAutoreleasePoolPop + 51 3 com.apple.Foundation -[NSAutoreleasePool release] + 125 4 com.canon.edsdk CIccMan::SendPtpCommand(void*, tagEdsPassThrough*) + 961 5 com.canon.edsdk CMacPtpInterface::SendCommandSelf(void*, SPtpParam*) + 120 6 com.canon.edsdk CPtpInterface::DS_SetRemoteMode(void*, DS_REMOTE_MODE_T) + 156 7 com.canon.edsdk CPtpCamera::OpenSessionSelf() + 314 8 com.canon.edsdk CEdsCamera::OpenSession(long) + 69 9 com.canon.edsdk EdsOpenSession + 77 10 com.canon.EOS Utility 2 -[MainController openSession] + 182 11 com.canon.EOS Utility 2 -[MainController connectCamera] + 353 12 com.canon.EOS Utility 2 -[MainController launchApp] + 555 0xb0000000 - 0xb0050ffb +com.canon.edsdk (18.104.22.168 - 22.214.171.124) EOS Utility.app/Contents/Frameworks/EDSDK.framework/Versions/A/EDSDK
It seems that the EOS Utility calls the EdsOpenSession function (in stack frame 9, marked with bold) in the EDSDK framework, which causes the crash down the road.
Now that I know the name of the component that causes the crash I quickly checked the EDSDK version in the old and new EOS Utility as well as in Capture One. The numbers are the following:
- EOS Utility 2.11.0 – EDSDK version 126.96.36.199
- EOS Utility 2.11.4 – EDSDK version 188.8.131.52
- Capture One 6.4.3 – EDSDK version 184.108.40.206
So the responsible party (for the crash) is either Canon or Apple. My bet is that Canon introduced this bug between 220.127.116.11 and 18.104.22.168 versions of their framework. Even if Apple has changed something that caused the framework to break, Canon is guilty in not testing their software on upcoming OS releases. This is especially irritating in these days when platform providers like Apple release a new operating system each year. Saying that “oh, it works fine on last year tech” is a surefire way to alienate customers. Phase is just guilty in not testing what they release (which is also a cardinal sin in my book).
I had filed bug reports with all three companies when I ran into the issue. Canon Europe’s response was the usual: nothing, nada, zip. Not even a “thank you for your feedback” message. Apple and Phase are both working on the bug, but made no progress during the last week or so.
I’ll let you know when progress is made, but given Canon’s track record of fixing things don’t expect it to happen overnight. Do your tethered shooting with the old EOS Utility in the meantime. Oh, and don’t forget to disable the Canon provider in Capture One to avoid interference between the two apps!