I haven’t fully moved to CoRD yet, largely because of various quirks in its UI. (I see that a new beta is out that may address most of my issues, but I haven’t had a chance to test that.) As a result, I mostly use Microsoft’s ‘official’ Remote Desktop Connection client 2.0.0b2. Plus, I’ve always loved its icon (props to Iconfactory on that, I believe).
This morning, it crashed. [Not a] big deal; crashes happen. I was curious why, though, and while the crash report didn’t help me figure that out (the topmost call in the stacktrace is MBUMutex::Acquire(unsigned long), which tells me absolutely nilch about the actual intent), I did find something else.
Here’s a portion of the Binary Images section from the crash log:
Binary Images:
0x1000 - 0x23fef +com.microsoft.rdc 2.0.0 Beta2 (2.0.0 Beta2) <0775a7210cb4454ea17af3dfdec33e2c> /Applications/Remote Desktop Connection.app/Contents/MacOS/Remote Desktop Connection
0x92000 - 0x108fe6 +com.microsoft.netlib 12.0.0 (12.0.0) <9fac28ca22ff49bf9185194497585126> /Applications/Remote Desktop Connection.app/Contents/Frameworks/Netlib.framework/Versions/12/Netlib
0x436000 - 0x5bafc7 +com.microsoft.rdc 2.0.0 (2.0.0) <ad448d7a974d4d90ad5b89b5dfa08bc1> /Applications/Remote Desktop Connection.app/Contents/Frameworks/RDCPAL.framework/Versions/12/RDCPAL
0x86c000 - 0x94dff7 libxml2.2.dylib ??? (???) <ccd6e2cb514fcd0b541bf153aae13481> /usr/lib/libxml2.2.dylib
0x9c8000 - 0x9e6fe7 com.apple.OpenTransport 3.0 (3.0) /System/Library/PrivateFrameworks/OpenTransport.framework/OpenTransport
[..]
Notice something? That they still use OpenTransport strikes me as weird, that they use the same bundle identifier com.microsoft.rdc for the two distinct bundles RDCPAL.framework and Remote Desktop Connection.app, which furthermore run simultaneously, is even stranger, but oddest yet? This explosive combination actually works.
After all, a bundle identifier is supposed to be globally unique. There are several API calls that let you launch and otherwise access a bundle through its identifier. How would that ever work when two bundles which clearly, while related, are distinct in their nature and purpose, have the same identifier? Should Xcode prevent you from building a project whose identifier matches one that already exists? Probably impossible to do on a reliable basis. Should dyld refuse to link or XNU refuse to launch a bundle when one with the same identifier is already running? Or should Microsoft simply have someone smack the CFBundle documentation over developers’ heads?
Your Own Thoughts
I'd love to hear your input. Just try to stick to a few rules:
Before you comment for the first time (or, after you have deleted cookies), you will have to answer a little challenge to prove that you are not a spammer.
Comments are written in Markdown.