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

Reply via email to