> On Jul 14, 2016, at 23:50, Maxwell, Adam R <adam.maxw...@pnnl.gov> wrote:
>
>
>> On Jul 14, 2016, at 14:15, Christiaan Hofman <cmhof...@gmail.com> wrote:
>>
>> It seems NSNotificationCenter isn’t the only, or perhaps the real, culprit.
>> Even though it does seem to fix the issue on 10.11, though apparently no1t
>> on 0.9.
>
> I’m not too surprised. I’ve always thought there’s a heap smasher somewhere,
> and minor changes in code were moving things around in memory just enough to
> avoid the crash.
>
>> it seems the real problem is in FVObject. That does some overrides of the
>> ref counting. And that does not seem to work well with the weak referencing
>> that NSNotificationCenter does.
>
> AFAIK NSNotificationCenter has always used unsafe, nonretained references,
> though it looks like it does something different on iOS now (zeroing weak, or
> whatever the jargon is). I can’t find anything in the Mac OS docs that
> indicate it’s changed there.
>
>> I really don’t know what FVObject is for. Can’t we do without? Or otherwise,
>> how should this be fixed?
>
> As it says in the header, FVObject just implements inline refcounting for
> performance reasons. Many (most?) Cocoa and CF objects used to do that, and
> it was a significant performance improvement when I implemented it. It looks
> like Omni removed their inline refcount from OFObject in 2013, so maybe it’s
> less of an improvement now.
>
> ISTR I #defined out all the code in FVObject and it still crashed, but it’s
> been a while. Retain/release messages were balanced in the object I saw that
> was overreleased, as far as I could tell. I also set a memory watchpoint on
> the inline refcount address to see if it was being overwritten on the heap,
> but only saw it change due to retain/release. Then I got sidetracked and
> never returned to it.
>
> Adam
>
I don’t see the crasher when I comment the FVObject code out. But that’s just a
few tries.
BTW, it seems weak reference support has added some more memory management
methods to NSObject that are not document, in particular _tryRelease and
_isDeallocating. Not really sure how they are used though. Perhaps that’s
related to the problem.
Christiaan
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Bibdesk-develop mailing list
Bibdesk-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-develop