On 17/11/2015 11:31, John Emmas wrote:
template <class T_CppObject> inline
RefPtr<T_CppObject>::~RefPtr()
{
if(pCppObject_)
pCppObject_->unreference(); // This could cause
pCppObject to be deleted.
// ^ ^ ^ CRASH HAPPENS HERE
}
and the above seems to get called during this 'destroy_()' call in
'gtkmm/gtk/gtkmm/window.cc':-
Window::~Window()
{
destroy_();
}
My guess would be that there is indeed some kind of double
deletion happening. I'll spend another hour or so on it and see
if I can get any further...
I didn't really get much further - except to realise that the crash
doesn't happen in that 'destroy_()' call - it actually happens after
the call (when 'Window' goes out of scope). So my gut feeling is
that this probably isn't a double deletion. Maybe
'pCppObject_->unreference()' is getting called for an object
that's already gone out of scope? Is that even possible..?
John
|