Hi all. I’m trying to figure out what appears to be a double dealloc problem of some sort. I’m sure the actual bug is in my code (I’m trying to get a window with complex subsidiary windows, etc., to disassemble and free the things it owns, without freeing itself), but the backtrace at the point that the crash happens doesn’t have any of my code in it at all. I’ve appended the full backtrace below my signature, in case it is informative; maybe somebody has seen this pattern before and knows what I’m likely to be doing wrong. My code does not use QFontCache or QScopedPointer at all, so it’s hard to guess where my bug might be.
My question, though, is bigger: how would folks here recommend debugging a double dealloc in a Qt-based app, running under Qt Creator? I’m coming from the Cocoa/Xcode world, and in that world there’s a very nice tool called NSZombie: you set a flag, and then whenever an object would be deallocated, it instead turns into an NSZombie object that produces nice console logs if anybody ever tries to use that memory as an object again. But that’s for NSObject. Is there something similar in the Qt world, such that I could get a console log or a break in the debugger at the point where a C++/Qt object that has been dealloced gets touched again? Or if not, how would you recommend approaching this? Thanks for any help. Cheers, -B. Benjamin C. Haller Messer Lab Cornell University 1 QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData>>::operator->() const qscopedpointer.h 118 0x10201b594 2 decltype(fp.operator->()) qGetPtrHelper<QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData>> const>(QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData>> const&) qglobal.h 1133 0x10201b594 3 QObject::d_func() const qobject.h 132 0x10201b594 4 QObject::thread() const qobject.cpp 1512 0x10201b594 5 QOpenGLVertexArrayObjectPrivate::destroy() qopenglvertexarrayobject.cpp 212 0x101b21481 6 QOpenGLVertexArrayObject::destroy() qopenglvertexarrayobject.cpp 424 0x101b217cc 7 QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject() qopenglvertexarrayobject.cpp 392 0x101b217c3 8 QOpenGLVertexArrayObject::~QOpenGLVertexArrayObject() qopenglvertexarrayobject.cpp 391 0x101b217b9 9 QOpenGLTextureGlyphCache::~QOpenGLTextureGlyphCache() qopengltextureglyphcache.cpp 93 0x101b1cacd 10 QOpenGLTextureGlyphCache::~QOpenGLTextureGlyphCache() qopengltextureglyphcache.cpp 88 0x101b1cbce 11 QOpenGLTextureGlyphCache::~QOpenGLTextureGlyphCache() qopengltextureglyphcache.cpp 88 0x101b1cbc9 12 QExplicitlySharedDataPointer<QFontEngineGlyphCache>::~QExplicitlySharedDataPointer() qshareddata.h 184 0x101883c92 13 QExplicitlySharedDataPointer<QFontEngineGlyphCache>::~QExplicitlySharedDataPointer() qshareddata.h 184 0x101883c74 14 QFontEngine::GlyphCacheEntry::~GlyphCacheEntry() qfontengine.cpp 1570 0x101883c74 15 QFontEngine::GlyphCacheEntry::~GlyphCacheEntry() qfontengine.cpp 1569 0x101883c74 16 void std::allocator_traits<std::allocator<std::__list_node<QFontEngine::GlyphCacheEntry, void *>>>::__destroy<QFontEngine::GlyphCacheEntry>(std::integral_constant<bool, false>, std::allocator<std::__list_node<QFontEngine::GlyphCacheEntry, void *>>&, QFontEngine::GlyphCacheEntry *) memory 1732 0x101883c74 17 void std::allocator_traits<std::allocator<std::__list_node<QFontEngine::GlyphCacheEntry, void *>>>::destroy<QFontEngine::GlyphCacheEntry>(std::allocator<std::__list_node<QFontEngine::GlyphCacheEntry, void *>>&, QFontEngine::GlyphCacheEntry *) memory 1595 0x101883c74 18 std::__list_imp<QFontEngine::GlyphCacheEntry, std::allocator<QFontEngine::GlyphCacheEntry>>::clear() list 733 0x101883c74 19 std::__list_imp<QFontEngine::GlyphCacheEntry, std::allocator<QFontEngine::GlyphCacheEntry>>::~__list_imp() list 712 0x101883c24 20 std::list<QFontEngine::GlyphCacheEntry>::~list() list 805 0x101883c24 21 std::list<QFontEngine::GlyphCacheEntry>::~list() list 805 0x101883c24 22 QHashNode<void const *, std::list<QFontEngine::GlyphCacheEntry>>::~QHashNode() qhash.h 147 0x101883c24 23 QHashNode<void const *, std::list<QFontEngine::GlyphCacheEntry>>::~QHashNode() qhash.h 147 0x101883c24 24 QHash<void const *, std::list<QFontEngine::GlyphCacheEntry>>::deleteNode2(QHashData::Node *) qhash.h 563 0x101883c24 25 QHashData::free_helper(void ( *)(QHashData::Node *)) qhash.cpp 572 0x101e5db39 26 QHash<void const *, std::list<QFontEngine::GlyphCacheEntry>>::freeData(QHashData *) qhash.h 603 0x10187a47b 27 QHash<void const *, std::list<QFontEngine::GlyphCacheEntry>>::~QHash() qhash.h 250 0x10187a46f 28 QHash<void const *, std::list<QFontEngine::GlyphCacheEntry>>::~QHash() qhash.h 250 0x10187a44f 29 QFontEngine::~QFontEngine() qfontengine.cpp 277 0x10187a44f 30 QCoreTextFontEngine::~QCoreTextFontEngine() qfontengine_coretext.mm 215 0x105b7cf8e 31 QCoreTextFontEngine::~QCoreTextFontEngine() qfontengine_coretext.mm 215 0x105b7cf89 32 QFontEngineMulti::~QFontEngineMulti() qfontengine.cpp 1782 0x101880039 33 QFontEngineMulti::~QFontEngineMulti() qfontengine.cpp 1778 0x10188012e 34 QFontEngineMulti::~QFontEngineMulti() qfontengine.cpp 1778 0x101880129 35 QFontCache::clear() qfont.cpp 2861 0x1018762eb 36 QFontCache::~QFontCache() qfont.cpp 2817 0x10187603c 37 QFontCache::~QFontCache() qfont.cpp 2816 0x1018763ee 38 QFontCache::~QFontCache() qfont.cpp 2816 0x1018763e9 39 QThreadStorageData::set(void *) qthreadstorage.cpp 162 0x101e25777 40 QGuiApplicationPrivate::~QGuiApplicationPrivate() qguiapplication.cpp 1694 0x1017ca490 41 QApplicationPrivate::~QApplicationPrivate() qapplication.cpp 184 0x10116f81e 42 QApplicationPrivate::~QApplicationPrivate() qapplication.cpp 184 0x10116f819 43 QScopedPointerDeleter<QObjectData>::cleanup(QObjectData *) qscopedpointer.h 60 0x10201c06c 44 QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData>>::~QScopedPointer() qscopedpointer.h 107 0x10201c061 45 QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData>>::~QScopedPointer() qscopedpointer.h 105 0x10201c05d 46 QObject::~QObject() qobject.cpp 1119 0x10201c05d 47 QApplication::~QApplication() qapplication.cpp 837 0x101171b3d 48 main main.cpp 246 0x100012256 49 start (x86_64) /usr/lib/system/libdyld.dylib 0x7fff6b461cc9 _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest