Archives / Search ›

Spent the best part of the night bug fixing on ICeCoffEE and F-Script Anywhere. I fixed the latter problem, but didn't get to finish the feature I'm planning on adding, which I'll finish and release after I get some sleep.

I'm seeing a very weird bug with a new release of a certain AppleScript Studio app and ICeCoffEE. The stack looks like this:

#5334 0x95364940 in -[ASKEventHandlerRegistry descriptionsForClassName:includingSuperClasses:] ()
#5335 0x95364940 in -[ASKEventHandlerRegistry descriptionsForClassName:includingSuperClasses:] ()
#5336 0x95364940 in -[ASKEventHandlerRegistry descriptionsForClassName:includingSuperClasses:] ()

I've tried lots of things to clear out any cached information in the registry. After many hours I realized it was more likely some quirk of posing that was causing the problem, and indeed this was it:

Breakpoint 4, 0x95364884 in -[ASKEventHandlerRegistry descriptionsForClassName:includingSuperClasses:] ()
(gdb) po $r5
NSTextView
(gdb) po objc_lookUpClass("NSTextView")
NSTextView
(gdb) po [objc_lookUpClass("NSTextView") superclass]
%NSTextView
(gdb) po [[objc_lookUpClass("NSTextView") superclass] superclass]
%NSTextView

Presto, instant infinite recursion. I may be able to fix this by patching the ASKEventHandlerRegistry, but I'm wondering what else posing can break by destroying the chain of superclasses in this manner. Why does it need to do so, anyway?

Comments are closed.