Ticket #52 (closed ошибка: неисправимо)
В определенный момент просто зависает и начинает есть память
| Reported by: | dmitriid.livejournal.com | Owned by: | dmitriid.livejournal.com |
|---|---|---|---|
| Priority: | низкий | Milestone: | 1.0rc3 |
| Component: | all | Version: | 1.0 |
| Keywords: | apple | Cc: |
Description
В определенный момент (при переходе между сообщениями, при синхронизации и т.п.) может прост озависнуть иначать жутко жрать память и до 70% процессора.
Возможно это MacOS-specific, прикладываю sample процесса, выполненного штатными средствами операционки
Attachments
Change History
comment:1 follow-up: ↓ 2 Changed 3 years ago by dmitriid.livejournal.com
ЗЫ.
Предполагаю, что где-то проблемсы с потоками, но это вилами по воде. Приоритет низкий, потому что приложение ожно убить и запустить за секунды, чем я и занимаюсь периодически :)
comment:2 in reply to: ↑ 1 Changed 3 years ago by antonbatenev.ya.ru
Replying to dmitriid.livejournal.com:
Предполагаю, что где-то проблемсы с потоками, но это вилами по воде. Приоритет низкий, потому что приложение ожно убить и запустить за секунды, чем я и занимаюсь периодически :)
Приложение однопоточное, по этому локов там возникнуть не должно. Хранилище, как я понимаю, SQLite? Повторяется ли такое же поведение на хранилище MySQL и/или с включенным/отключенным сжатием сообщений?
Можно еще попробовать подождать некоторое время - если это проблема при работе с БД, то должна отвалиться по таймауту. Можно попробовать на самой базе выполнить (если база большая):
ANALYSE; VACUUM;
comment:3 Changed 3 years ago by dmitriid.livejournal.com
Надо будет попробовать. Послднее время такое поведение стало проявляться реже. В общем, мистика :)
comment:4 Changed 3 years ago by dmitriid.livejournal.com
Гонял под дебаггером. Вот примерный стек зависшего метода:
...системные вызовы...
QDialog::exec()
FormMain::menu_service_synchronize_triggered
а именно в строчке после комментария коммит данных в строке
if (form->exec() == QDialog::Accepted)
то есть что-то где-то провисает именно в form->exec()
далее спекуляция
я могу быть неправ, но если лочится UI тред, то оно тут просто зависнет, не показавшись. при каких условиях это происходит — хз

