Qt5/c++ 在调试期间生成'Corrupted shared library list'错误

Qt5/c++ generating 'Corrupted shared library list' error during debug

本文关键字:Corrupted library 错误 list shared c++ 调试 Qt5      更新时间:2023-10-16

我有一个Qt5/C++应用程序,它似乎工作正常,但在调试模式(GDB)下运行时,QT Creator控制台(stderr)上会弹出此错误-有时!:

Corrupted shared library list: 0x7fffe8008e90 != 0x751e50

我找不到任何关于原因的参考,也不知道是什么触发了它(除了与使用QLinkedList有关)。我尝试切换到QVector,但有时会弹出相同的错误。

这是什么?我该如何修复?Valgrind说没有内存损坏。。。那么这是一个虚假报道的问题吗?或者我做错了什么。


我把上面的错误追溯到下面的最后一行(第4行)。

Settings *programSettings =  Settings::instance();
QString driver=programSettings->database_driver();
driver="QMYSQL";  // Override for testing
m_db = QSqlDatabase::addDatabase(driver);

这对我来说毫无意义……有人能解释为什么QSqlDatabase::addDatabase行会导致损坏吗?同样,为什么只有在调试时才会出现错误。。。但在没有gdb的情况下运行时不会?

根据视图的数量,似乎有很多人有这个问题。我们把代码简化为一个简单的例子,然后重现这个问题。问题的根源不是用户代码,而是Qt创建者本身。我们不能走得更远了——只要忍受它,直到Qt Creator修复出现。

看起来你在写不属于自己的内存。看起来您正在取消引用一个具有未初始化值的指针。在启用所有警告的情况下编译应用程序,并确保您理解所有警告。在那之后,你可能需要开始一个代码审计,当然,在你最小化代码之后。