[Pythonmac-SIG] NSUncaughtRuntimeErrorException and NSArrayController

Bob Ippolito bob at redivi.com
Thu Mar 30 01:46:50 CEST 2006


On Mar 29, 2006, at 3:28 PM, Saggau wrote:

> Hi folks.  I've done a load of googling after getting SIG(variable)  
> errors
> when adding and removing objects to/from an arrayController in  
> pyobjc and can't seem
> to figure this one out.  I've tried the pyobjc list and have no  
> response so far.
>
> Apologies for cross-posting and please let me know if I'm asking  
> the question poorly, vaguely,
> or on the wrong mailing list.
>
> I set Signals.dumpStackOnFatalSignal() as well as
> Debugging.installVerboseExceptionHandler
> () and then I start adding python
> (subclassing NSObject) objects to my NSArrayController.  After a  
> variable
> number of additions and/or subtractions, I get the stack trace  
> below.  (there
> are no other errors, including those related to KVC compliance, etc)
>
>
> Intuition is telling me that I may be in trouble because I'm  
> instantiating
> python singleton objects (subclassing the class directly below) as
> attributes of the object that I'm adding to the NSArrayController,  
> but I
>
> could be way off here.
>
> *Update: I removed all singletons from my code and have the same  
> behavior.
> *Update: this happens whether or not I have the objects delete on  
> removal from the
> controller.
>
> class scAbstractSingleton(object):
>
>    def __new__(cls, *args, **kwds):
>       it = cls.__dict__.get("__it__")
>       if it is not None: return it
>       cls.__it__ = it = object.__new__(cls)
>       it.init(*args, **kwds)
>       return it
>
>
>    def init(self, *args, **kwds):
>       pass
>
> Is there a way post-mortem to get the object that *was* at  
> 0x114d740 in the
> trace below?  Is there a way to recursively enumerate all  
> attributes of a
> given object to do a print(theAttribute) on instantiation?  That  
> could be
>
> crazy...  Any cool pdb tricks I should know?
>
> I assume that figuring out which object (0x114d740 in the trace  
> below) was
> freed is a good place to start, but I don't know if that's possible in
> retrospect, as that object is freed.  I can see the memory  
> referenced in
>
> gdb, but I don't see anything that would help...at least not to my
> inexperienced eyes.  Who knows the proper voodoo?

Use NSZombieEnabled.

http://developer.apple.com/technotes/tn2004/tn2124.html

-bob



More information about the Pythonmac-SIG mailing list