qt — Qt5 / c ++ генерирует ошибку «поврежденный список совместно используемых библиотек» во время отладки

У меня есть приложение Qt5 / C ++, которое, кажется, работает нормально, но при запуске в режиме отладки (GDB) эта ошибка появляется на консоли QT Creator (stderr) — СЛУЧАЙНО !:

Corrupted shared library list: 0x7fffe8008e90 != 0x751e50

Я не могу найти какую-либо ссылку на причину, и я не могу выяснить, что это вызывает (кроме того, что что-то делать с использованием QLinkedList.) Я пытался переключиться на QVector, но иногда появляется та же ошибка.

Что это и как мне это исправить? Вальгринд говорит, что нет повреждения памяти … так это ложная проблема с сообщениями? Или я что-то не так делаю.


Я проследил вышеупомянутую ошибку до последней строки (строка 4) ниже.

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

Это не имеет смысла для меня … может кто-нибудь объяснить, почему строка QSqlDatabase :: addDatabase вызывает повреждение? Кроме того, почему ошибка появляется ТОЛЬКО при отладке … но не при работе без GDB?

1

Решение

Судя по количеству просмотров, кажется, что много людей с этой проблемой. Мы сократили код до простого примера и затем воспроизвели проблему. Источником проблемы является не код пользователя, а сам Qt Creator. Мы не можем идти дальше — просто мириться с этим, пока не появится исправление Qt Creator.

1

Другие решения

Похоже, вы пишете на память, которая не принадлежит вам. Похоже, вы разыменовываете указатель, который имеет неинициализированное значение. Скомпилируйте приложение со всеми включенными предупреждениями и убедитесь, что вы понимаете все предупреждения. После этого вам может понадобиться запустить аудит кода, после того как вы, конечно, минимизируете код.

0

По вопросам рекламы [email protected]