УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

[BugFixed] Неуловимые зависания


Автор Сообщение
Сообщение создано: 29. 03. 2012 [10:03]
punk
Василий Петров
Создатель темы
Зарегистрирован(а) с: 09.05.2011
Сообщения: 57
После очередной доработки одного из моих проектов скада начала иногда виснуть при переключении страниц. Связал я это тогда с тем, что в последнем изменении стал использовть ссылки вида "wdg:../../xxx", висло при _сходе_ с такой страницы на любую другую. При замене на "wdg:../xxx" зависания пропали. Но только на одной машине. На другой (неттоп, что-то вроде nT330i) зависания остались. Похоже, что использование "ссылки через уровень" здорово повышает вероятность проявления зависания на той первой машине, но и без этого пару раз ее удавалось завесить.

Зависание выглядит следующим образом:
- интерфейс не реагирует ни на что, окно не перерисовывается
- параллельно работающий QtCfg - аналогично
- при посылке kill в консоли
3|/WorkStation/ | Получен сигнал прерывания. Сервер останавливается!
1|/WorkStation/ | Останов!

через 10 минут ждать надоедает, kill -9

На демо ошибка у меня никак не хочет проявляться, так что набросал я простенькую конфигурацию, которая виснет. Структура примерно следующая:
- есть главный экран, в нем область, в которой переключаются страницы
- в страницы (уровень 1), включены составные виджеты (уровень 2). Включение динамическое (через this.wdgAdd)
- в которые включены виджеты с кнопками (уровень 3)
- атрибут 3го уровня связывается (входная связь) с атрибутом 1го, в атрибут 1го постоянно пишутся текущие секунды, которые копируются виджетом 3го уровня на кнопки
- на всех уровнях включена динамика для "прогрузки" машины, так как замечено, что на низкой нагрузке зависания маловероятны.

Для проявления ошибки нужно нажимать кнопки A & B (переключение страниц) по очереди, на 20-30 попытке у меня зависает.
Чаще зависает если жать кнопки не дожидаясь загрузки страницы, но иногда виснет и при более медленном нажатии. Также влияет на частоту зависаний число итераций (пустых) циклов в динамике.

Скада - везде самосбор, версии разные (последний тест на rev1773). Компилятор gcc (Debian 4.4.6-11) 4.4.6.
Вложенный файл

oscadaHaltBugPunk.tgz (Тип файла: application/x-compressed-tar, Размер: 6.16 килобайт) — 1486 загрузок
Сообщение создано: 29. 03. 2012 [17:49]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
Проблема воспроизвелась и причина выявлена.
Однако в виду фундаментальности, связанной с текущей концепцией разделения доступа к атрибутам виджетов, исправить быстро её не получится.

Занимаюсь этой проблемой.

Learn, learn and learn better than work, work and work.
Сообщение создано: 30. 03. 2012 [08:36]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
Исправлено, проверяйте!

Learn, learn and learn better than work, work and work.



9883