Not enough info in the backtrace. Hrm. I did see this many years ago, but I can't remember what caused it. Some form of being a bit too smart for my own good I suspect ;)
Exact line in the destructor could help. Are you deriving from the QSqlDatabase class? Or maybe holding a pointer to a deleted copy? Maybe a valgrind --tool=memcheck run may shed some light. -- Bill King Test Engineer Nokia, Guidance Team > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of > ext Mark Summerfield > Sent: Friday, 1 March 2013 3:24 PM > To: [email protected] > Subject: [Interest] QSqlDatabase segfault - me or Qt5? > Importance: High > > Hi, > > I've got a release version of Qt that's giving this on 64-bit linux: > > Program received signal SIGSEGV, Segmentation fault. > 0x00007ffff7bb35ea in QSqlDatabase::close() () from > /home/mark/opt/qt501/lib/libQt5Sql.so.5 (gdb) bt > #0 0x00007ffff7bb35ea in QSqlDatabase::close() () from > /home/mark/opt/qt501/lib/libQt5Sql.so.5 #1 0x00007ffff7bb475d in > QSqlDatabase::~QSqlDatabase() () > from /home/mark/opt/qt501/lib/libQt5Sql.so.5 #2 0x00007ffff7bb723d in ?? > () from /home/mark/opt/qt501/lib/libQt5Sql.so.5 #3 0x00007ffff73faa2d in > QHashData::free_helper(void (*)(QHashData::Node*)) () from > /home/mark/opt/qt501/lib/libQt5Core.so.5 #4 0x00007ffff7bb6e1c in ?? > () from /home/mark/opt/qt501/lib/libQt5Sql.so.5 #5 0x00007ffff664c612 in > ?? () from /lib/libc.so.6 #6 0x00007ffff664c665 in exit () from > /lib/libc.so.6 #7 > 0x00007ffff6634c94 in __libc_start_main () from /lib/libc.so.6 #8 > 0x0000000000404569 in _start () > > There's no mention of my own code. > > I have a Database class which creates database connections using > QSqlDatabase::addDatabase(). I create a fresh m_cname (connection name) > for each addDatabase() and store it for use in the methods and in the > destructor: > > void Database::~Database() > { > if (QSqlDatabase::contains(m_cname)) { > { > QSqlDatabase db = QSqlDatabase::database(m_cname); > db.close(); > } > QSqlDatabase::removeDatabase(m_cname); > } > } > > Any suggestions as to what I'm doing wrong? > > Thanks! > > -- > Mark Summerfield, Qtrac Ltd, www.qtrac.eu > C++, Python, Qt, PyQt - training and consultancy > "Programming in Go" - ISBN 0321774639 > http://www.qtrac.eu/gobook.html > _______________________________________________ > Interest mailing list > [email protected] > http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/interest
