Наша команда разрабатывает сложное приложение с использованием Qt 4.7.4. Одна из ключевых функций, которые мы предоставляем, требует содержимого HTML + JS, предоставленного QWebBrowser.Открыт диалог открытия/сохранения стандартных окон WebKit
Проблема заключается в том, что загрузка некоторых страниц приводит к сломанным диалогам открытия/сохранения:
Диалог еще «работает» с точкой зрения взаимодействия: выпадающий список файлов фильтра может быть открыт, файл имя может быть введено, но все это неверно. Дерево файлов и дерево каталогов вообще не нарисованы.
Я не нашел ошибок в этой проблеме на Qt tracker и google. Мы решили, что проблема локальна для нашего проекта. Мы предполагаем, что некоторые внутренние структуры comctl32.dll разрушены чей-то операцией записи с недопустимым адресом, но мы понятия не имеем, как поймать реальную причину. Также стоит упомянуть, что эта проблема НЕ отображается с Qt 5.4, а на любой версии Windows меньше, чем 8.0. К сожалению, мы должны построить следующий релиз еще на Qt 4.8 (проект огромен, процесс обновления занимает значительное количество времени).
Как можно отладить такую проблему? Какие операции с памятью и/или вызовы WinAPI должны быть подключены? Любые идеи высоко ценятся.
Набор инструментов является MSVC 9.0 (VS 2008)
Если вы хотите, чтобы Qt 4.7 работал на Windows 8 и выше, вы сами можете его поддерживать (или купить для него специальный контракт). Вы можете выгрузить и перезагрузить comctl32.dll, если это возможно. Но самое главное, это указывает либо на ошибку памяти Qt, либо (скорее) на ошибку памяти в вашем коде. Используйте статические анализаторы, чтобы убедиться, что вы пропустили что-то очевидное. Есть несколько вариантов, но, учитывая размер вашего проекта, вы должны использовать как минимум PVS-Studio и Coverity, отдельно от той, которая поставляется с последними версиями Visual Studio. –