我在Qt 4.8.6上遇到了一個非常奇怪的OS X崩潰。OS X上的QStringList.append()崩潰
我的代碼非常簡單位(工作在我們的Windows只是罰款和Linux版本):
QStringList list;
list << "test";
什麼我發現是追加操作將在運行時崩潰與下面的堆棧跟蹤:
QBasicAtomicInt::ref() { asm volatile("lock\n" ... }
QString::QString(QString const&)
QString::QString(QString const&)
QList<QString>::node_copy(QList<QString>::Node*from, QList<QString>::Node*, QList<QString>::Node*)
QList<QString>::detach_helper_grow(int, int)
QList<QString>::append(QString const&)
QStringList::operator<<(QString const&)
大多數其他操作,包括QStringList的析構函數導致類似的崩潰。
我真的在如何進一步調試這個損失,任何意見將不勝感激。
謝謝!
這可能不僅僅是'QStringList'失敗。最低級別的堆棧框架顯示崩潰很可能發生在'QBasicAtomicInt'類中。 – owacoder
它確實覺得它可能與隱式共享和參考計數有關。但是,我也看到在QString拷貝構造函數中,源字符串數據顯示爲空... – Serguei
重新編譯時啓用了addresssanitizer,再次運行它並查看它是否抱怨內存損壞。 –