On 2011 Sep 30, at 09:42, Jim Correia wrote:

> But you have a pretty reliable way to reproduce the bug, right?

Thank you, Jim.  Yes, it takes several minutes but is scripted.

> Have you broken at the point of objc_exception_throw for the 
> NSObjectInaccessibleException and examined what, specifically, is firing the 
> fault?


Yes.  I was wrong about attributes not being in the invocation – see below.

#0      0x962250c0 in objc_exception_throw
#1      0x94c6a891 in _PFFaultHandlerLookupRow
#2      0x94c9b5df in -[NSFaultHandler fulfillFault:withContext:]
#3      0x94c796b3 in -[NSManagedObject(_NSInternalMethods) 
_newPropertiesForRetainedTypes:andCopiedTypes:preserveFaults:]
#4      0x94c7965f in -[NSManagedObject(_NSInternalMethods) 
_newAllPropertiesWithRelationshipFaultsIntact__]
#5      0x94c7954e in -[NSManagedObjectContext(_NSInternalChangeProcessing) 
_establishEventSnapshotsForObject:]
#6      0x94c79465 in _PFFastMOCObjectWillChange
#7      0x94cd7019 in -[NSManagedObjectContext(_NSInternalChangeProcessing) 
_undoUpdates:]
#8      0x9021effd in __invoking___
#9      0x9021ef39 in -[NSInvocation invoke]
#10     0x9021f08a in -[NSInvocation invokeWithTarget:]
#11     0x001be1b9 in -[GCConcreteUndoTask perform] at GCUndoManager.m:1496

Thanks to Graham Cox, I have code for [GCConcreteUndoTask perform].  I also 
have a category on NSInvocation which gives me a -longDescription of its 
properties:

   target = The document's (and Undo Manager's) managed object context
   selector = _undoUpdates:
   The argument of _undoUpdates: is an array containing 4 objects
      object at index 0:
         the deleted object, with a retainCount of 9, whose
             data is <fault>
      object at index 1:
         an instance of NSKnownKeysDictionary1, whose keys and
         values are the keys and values of the deleted object
         before it was faulted.  Its retainCount is 9.
      object at index 2:
         an instance of NSNull
      object at index 3:
         an instance of NSNumber whose value is 1

> Start here and work backwards and you may be able to infer why someone has a 
> reference to a stale object.

I've never seen a precise definition of the word "stale" in Core Data.  The 
object in question has a retainCount of 9, and it is faulted.  Does that mean 
it's "stale"?

> At the very least you’ll know who.

It seems that NSManagedObjectContext seems to have all the information it needs 
to un-fault the object, but won't do it for some reason.

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to