crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Приложение Qt+QML зависает через много часов работы
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Osolemio Дата 31.10.2017, 16:40
  UPD:

Сделал тестовое приложение. Простой эмиттер частиц. Результат тот же.
Вывод: Particle System в режиме долгой работы с большим количеством частиц вызывает через некоторое время бесконечный цикл между функциями:

QHashData::allocateNode(int) и

QQuickParticleDataHeap::insertTimed(QQuickParticleData *, int)

Каждый N циклов еще вызов вот этих:

QQuickParticleGroupData::recycle()

QHashData:: detach_helper

Воспроизводится на всех ОС, всех компиляторах.

Сегодня отправил в Qt баг репорт. Рассмотрен. Присвоена важность "Критический" P1
Ожидаю исправлений.
Osolemio Дата 26.10.2017, 2:02
  Кому интересно:

с SQLite все хорошо. Зависания не пропали.
Пришлось сегодня совсем опуститься :D До дизассемблера. 14 часов ждал.
На самом деле бесконечный цикл. Великий WhatIsHang был прав.
Цикл образуется в коде libQt5QuickParticles.so.5 с возвратом в libQt5Core.so.5 и обратно. Больше никуда не вылезает.
Теперь буду смотреть из-за чего он вылезает.
Вот такие сюрпризы от этих particles

За сим кланяюсь. Всех благ форуму!
Osolemio Дата 25.10.2017, 15:33
  Похоже самому придется разбираться
Вроде все в Sqlite обработке. И похоже я попал на http://beets.io/blog/sqlite-nightmare.html lock timeout.
Поменял настройки SQLite, запустил. Часиков через 10-15 расскажу - оно или нет :)
Всем, кто смотрел, спасибо ;)
Osolemio Дата 25.10.2017, 0:03
  Доброго дня, други. Может поможете в чем и наставите на мысли умные :)

Не понимаю куда смотреть:
Имеется проект Qt + QML. Без UI. БОльшая часть - интерфейсная QML. Сишная часть не очень большая. Пару объектов, интегрированных в динамически создаваемый QML объект в ApplicationWindow и сетевая читалка по таймеру. берущая удаленно данные всего лишь раз в 5 секунд. Несчастный килобайт. И пишет его в SQLite Db. Кушает CPU на уровне пары процентов. Т.е. легкая совсем. Есть особенность: в интерфейсе есть анимация с particle system.

Проблема в том, что проверил уже на всех платформах: Вынь x32/64, Убунту, МакОС программа через часов 9-10 работы перестает отвечать.
Valgrind - пусто. Ни одной ошибки до зависания. По остановке - тоже. Сейчас запустил с дебагером, может увижу где болтается при зависоне.
Пробовал собирать на 5.9 - 5.9.2, MinGW, MSVC - результат один и тот же.

Режимы OpenGPL менял (кстати, hang signature b3a6) - гуглил, разные проги имеют похожие подписи при "not responding" когда проблемы с видео-драйвером. Но тут на разных компах проверено. :(

Пробовал WhatsHang. Говорит, что некий длииинный цикл. Ничего более хорошего не показывает. Нет у меня циклов. Вообще. И вложенных вызовов тоже не обнаружил. Чтение по сокету исключительно через слоты/сигналы. Один while несчастный чтения из сокета проверен-перепроверен.

Ни один анализатор и профайлер ничего подозрительного не показывает. По всем данным нигде ни затыков, ни длинных операций, съедающих события. В этой части только 2 объекта сразу создаются через new и живут себе.

Как вычислить "героя"? Несколько дней поисков ничего не дали. Буду премного благодарен, если ткнете носом в методику отладки данной погани.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 12:06