recently, the App Store suddenly stopped letting me update existing apps to a newer version, and stopped allowing me to install any new software whatsoever. no crash was occurring, and the program wouldn’t hang, but a progress spinner would appear in the title bar and simply stay there.
switching away from the Updates section would make the spinner go away, so apparently nothing was really happening. after a lot of messing around, including clearing out caches and preferences, and even contacting the (ultimately unhelpful) Apple support, I finally poked around in Console and saw some logged messages:
2011-08-12 17:02:27.839 App Store: ### Error trying to unarchive data. *** file inconsistency: read 'q', expecting 'i' 2011-08-12 17:02:29.504 App Store: ### Error trying to unarchive data. *** file inconsistency: read 'q', expecting 'i' 2011-08-12 17:02:32.287 App Store: *** file inconsistency: read 'q', expecting 'i' 2011-08-12 17:02:32.289 App Store: ( 0 CoreFoundation 0x9210ee77 __raiseError + 231 1 libobjc.A.dylib 0x92d54149 objc_exception_throw + 155 2 CoreFoundation 0x92076e89 +[NSException raise:format:arguments:] + 137 3 CoreFoundation 0x92076df9 +[NSException raise:format:] + 57 4 Foundation 0x959f14f8 checkExpected + 294 5 Foundation 0x959f2004 -[NSUnarchiver decodeValueOfObjCType:at:] + 55 6 CommerceKit 0x0009d377 -[ISAccount initWithCoder:] + 635 7 Foundation 0x959f1635 _decodeObject_old + 309 8 Foundation 0x959f24cd _decodeValueOfObjCType + 1125 9 Foundation 0x959f2013 -[NSUnarchiver decodeValueOfObjCType:at:] + 70 10 Foundation 0x959f1ca8 -[NSArray(NSArray) initWithCoder:] + 382 11 Foundation 0x959f1635 _decodeObject_old + 309 12 Foundation 0x959f09fd +[NSUnarchiver unarchiveObjectWithData:] + 89 13 CommerceKit 0x00072963 SSGetUnarchivedValueForKey + 122 14 CommerceKit 0x0009f99d -[ISAccountStore _accountsChangedNotification:] + 56 15 Foundation 0x959f8470 __-[NSDistributedNotificationCenter addObserver:selector:name:object:suspensionBehavior:]_block_invoke_1 + 49 16 CoreFoundation 0x920599c0 ____CFXNotificationPostToken_block_invoke_1 + 352 17 CoreFoundation 0x92027830 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16 18 CoreFoundation 0x91fdacb1 __CFRunLoopDoBlocks + 337 19 CoreFoundation 0x920059c8 __CFRunLoopRun + 1096 20 CoreFoundation 0x920051ec CFRunLoopRunSpecific + 332 21 CoreFoundation 0x92005098 CFRunLoopRunInMode + 120 22 HIToolbox 0x9086b487 RunCurrentEventLoopInMode + 318 23 HIToolbox 0x90872cee ReceiveNextEventCommon + 168 24 HIToolbox 0x90872c32 BlockUntilNextEventMatchingListInMode + 88 25 AppKit 0x97da08ec _DPSNextEvent + 678 26 AppKit 0x97da0159 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 113 27 AppKit 0x97d9c4cb -[NSApplication run] + 904 28 AppKit 0x9802fb54 NSApplicationMain + 1054 29 App Store 0x000215d1 App Store + 5585 )
a little research on the file inconsistency error message, and confirmed by the stack trace, showed that the message was coming from NSUnarchiver, and was usually related to a 64-bit app trying to unpack 32-bit data, or something along those lines anyway.
it is at that point that I realised I had used XSlimmer on the Mac recently, and, while everything else had been fine, I must have stripped the 32-bit code from the App Store. restoring from backup made everything work again. I reported the problem to the XSlimmer blacklist, so hopefully this won’t affect many other people.
but I suppose the moral of the story is either that you shouldn’t waste time screwing around with “efficiency” apps, or that you should actually look at the logs once in a while when you have a problem!
Thanks for the tip.
ReplyDeleteIt has helped in my case also.
I didn't use slimmer, but to save RAM I selected "Run in 32-bit mode" on App Store info page. And all the symptoms were the same as yours.
I had the same problem. After reading you article, I was able to solve this by also stripping the 32 bit code from the storeagent
ReplyDeletesudo cp /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeagent /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeagent.full
sudo ditto --arch i386 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeagent /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeagent.i386
sudo mv /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeagent.i386 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeagent