Это ошибка в анализаторе Qt Creator?

При работе с некоторым кодом я столкнулся с падением производительности QT Creator. На самом деле он запускает поток, который занимает 100% ЦП в бесконечном цикле: даже закрытие процесса IDE, не убивая его, становится невозможным. Это полностью воспроизводимо на моей машине. Перед отправкой сообщения об ошибке я хочу получить подтверждение от других пользователей и собрать некоторую статистику для версий QT Creator, ОС, компилятора, STL и т.д. Код требует C++11 и выше.

После некоторого исследования я сократил свой код до самого короткого примера, который воспроизводит проблему (не смотрите на симантику кода, проблема в том, как его обрабатывает IDE):

#include <set>
int main() {
    std::set<int> s;
    auto iter = s.insert(1).first;
    iter->second;
    return 0;
}

Основные моменты:

  • авто важно
  • такое же поведение можно воспроизвести с помощью карты вместо набора
  • insert важен, так как он возвращает не простой итератор, а парный итератор, bool>
  • Строка iter->second симантически неверна, но это не важно (вы можете использовать std::set‹ std::pair>, чтобы исправить ее). Проблема в том, что IDE вылетает после iter->, что бы это ни значило.

Моя конфигурация: QT Creator 3.5.1 на основе Qt 5.5.1 (MSVC 2013, 32 бит); Windows 10.


person Dmitry Kuzminov    schedule 12.05.2019    source источник
comment
Трек ошибок Qt Creator — лучшее место для таких вопросов.   -  person QtRoS    schedule 12.05.2019
comment
Баг-трекер — лучшее место для сообщения об ошибке, но перед отправкой я хочу понять, что полностью понимаю проблему.   -  person Dmitry Kuzminov    schedule 12.05.2019


Ответы (1)


Многое произошло со времен Qt Creator 3.5. Модель кода совершенно новая, основанная на Clang. Следовательно, я не могу воспроизвести вашу проблему с Qt Creator 4.9. (И да, у старой модели кода было несколько ограничений и ошибок.)

В общем, всегда проверяйте, что у вас установлена ​​последняя поддерживаемая версия программного обеспечения, прежде чем составлять отчет об ошибке.

person ypnos    schedule 12.05.2019
comment
Qt 5.5.1 — последняя версия, поддерживающая WebKit. - person Dmitry Kuzminov; 12.05.2019
comment
Qt Webkit сам по себе устарел уже довольно давно (с 2014 года), в основном из-за соображений безопасности. Время портировать на Qt Webengine. Обратите внимание, что Qt 5.5 также не поддерживается год назад. - person ypnos; 12.05.2019
comment
В то время, когда я начинал свой проект, Qt WebEngine не поддерживал достаточно функций, которые мне были нужны. Соображения безопасности не были проблемой для меня. Пока Qt 5.5.1 все еще используется, многие люди предпочитают его отчасти из-за WebKit. - person Dmitry Kuzminov; 12.05.2019
comment
Могу подтвердить, у меня также был процесс ClangCodeModel, который застрял в бесконечном цикле из старых версий QtCreator. Однозначно рекомендую обновиться - это исправит этот баг, и вы получите гораздо более приятный опыт разработки. - person Jetski S-type; 13.05.2019