crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Приложение Qt+QML зависает через много часов работы
Osolemio
  опции профиля:
сообщение 25.10.2017, 0:03
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.10.2017
Пользователь №: 4645

Спасибо сказали: 4 раз(а)




Репутация:   0  


Доброго дня, други. Может поможете в чем и наставите на мысли умные :)

Не понимаю куда смотреть:
Имеется проект 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 и живут себе.

Как вычислить "героя"? Несколько дней поисков ничего не дали. Буду премного благодарен, если ткнете носом в методику отладки данной погани.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Osolemio
  опции профиля:
сообщение 25.10.2017, 15:33
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.10.2017
Пользователь №: 4645

Спасибо сказали: 4 раз(а)




Репутация:   0  


Похоже самому придется разбираться
Вроде все в Sqlite обработке. И похоже я попал на http://beets.io/blog/sqlite-nightmare.html lock timeout.
Поменял настройки SQLite, запустил. Часиков через 10-15 расскажу - оно или нет :)
Всем, кто смотрел, спасибо ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Osolemio
  опции профиля:
сообщение 26.10.2017, 2:02
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.10.2017
Пользователь №: 4645

Спасибо сказали: 4 раз(а)




Репутация:   0  


Кому интересно:

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

За сим кланяюсь. Всех благ форуму!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Osolemio
  опции профиля:
сообщение 31.10.2017, 16:40
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.10.2017
Пользователь №: 4645

Спасибо сказали: 4 раз(а)




Репутация:   0  


UPD:

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

QHashData::allocateNode(int) и

QQuickParticleDataHeap::insertTimed(QQuickParticleData *, int)

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

QQuickParticleGroupData::recycle()

QHashData:: detach_helper

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

Сегодня отправил в Qt баг репорт. Рассмотрен. Присвоена важность "Критический" P1
Ожидаю исправлений.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 7.7.2022, 16:37