Run this in Terminal:
system_profiler -xml -micro > test.spx; open test.spx -a "System Information"
You’ll see its icon show in the Dock, then vanish. What’s happening is System Information expects a property list file that has a dictionary as its root element. The system_profiler has an undocumented “micro” option that generates a smaller report, used in crash reports and elsewhere in the system. This report, when combined with the “xml” option, produces a property list with an array root element. System Information assumes it’ll always be a dictionary.
This is from 10.8.3. Even on 10.6.8 the same bug exists, however it appears the code catches the exception so it doesn’t crash the app, according to the Console log. Apparently that try block got removed in a later version since the app crashes now.
The lesson from this is when working with property list objects from serialized sources, always check the class of the object (in Foundation) using -[NSObject isKindOfClass:] or the TypeID (in CoreFoundation) using CFGetTypeID() before working with the object.