Russian Qt Forum
Ноябрь 22, 2024, 12:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Отлов ошибки  (Прочитано 12859 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Август 01, 2018, 09:46 »

Привет друзья!
Столкнулся с проблемой, что на одной машине программа выполняет некорректный расчёт. Подключиться к ней нет возможности...
Пробовал воспроизвести проблему под санитайзерами и valgrind - ругань только на сторонние либы и не в момент интересующего меня расчёта.
Входные данные примерно одинаковые (могут отличаться настройки отображения элементов отрисовки и положение клика пользователя)
Как только добавляю больше логов, чтобы локализовать проблему на проблемной машине, как она сразу пропадает.
Быть может кто-нибудь подкинет идей что можно ещё попробовать сделать для решения проблемы...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 01, 2018, 10:16 »

Что у тебя задействовано в расчете?
У меня как-то был косяк на одной машине из-за того, что использовалась Cuda, а дрова на видюху стояли какие-то кривые...
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #2 : Август 01, 2018, 10:24 »

Нужно искать не инициализированные переменные. Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 01, 2018, 10:37 »

Нужно искать не инициализированные переменные. Улыбающийся
Которых априори быть не должно.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Август 01, 2018, 12:53 »

.. некорректный расчёт.
Т.е. вылета нет, некорректный рез-т? Ну тогда для начала лог: входные данные + рез-т.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Август 01, 2018, 13:23 »

Что у тебя задействовано в расчете?
У меня как-то был косяк на одной машине из-за того, что использовалась Cuda, а дрова на видюху стояли какие-то кривые...

В расчёте задействованы матрицы, точки из Qt также мои классы геометрии (плоскость, линия, треугольник). Клик берётся из QOpenGLWidget, но вроде корректные значения выставляются.

Нужно искать не инициализированные переменные. Улыбающийся
Это первое, о чём подумал. Глазками пробежался - вроде нет. Стараюсь не допускать таких Мне кажется, валгринд бы ругнулся на неинициализированную переменную. А может существует ключик gcc/clang инициализировать неинициализированные переменные фиксированным значением?

.. некорректный расчёт.
Т.е. вылета нет, некорректный рез-т? Ну тогда для начала лог: входные данные + рез-т.
Текущего лога недостаточно. При подробном логгировании не воспроизводится
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Август 01, 2018, 13:30 »

Ещё есть момент - на той машине 2 монитора. Но, вроде, это никак не влияет

Код
C++ (Qt)
Converting user click: QPoint(389,671) to line
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Август 01, 2018, 13:31 »

Потоки используются?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
zhbr
Гость
« Ответ #8 : Август 01, 2018, 14:07 »

как вариант - прогнать код через статический анализатор кода(pvs или clang).
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #9 : Август 01, 2018, 15:55 »

Потоки используются?
openmp
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #10 : Август 01, 2018, 15:56 »

как вариант - прогнать код через статический анализатор кода(pvs или clang).
cppcheck использовал
Поругался только на отсутствие explicit
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #11 : Август 01, 2018, 16:00 »

Потоки используются?

Легально ли в потоках пользоваться методами временных объектов вроде такого:

Код
C++ (Qt)
const auto &val = var->getString().trimed(); // return by value
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #12 : Август 01, 2018, 16:20 »

Легально ли в потоках пользоваться методами временных объектов вроде такого:
Код
C++ (Qt)
const auto &val = var->getString().trimed(); // return by value

Можно, но осторожно Улыбающийся. С этой val что потом делают? Передают в другие методы, особенно, если они в других потоках могут выполняться? Особенно, если они к этому, по const QString & параметр получают.
Записан

Пока сам не сделаешь...
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #13 : Август 01, 2018, 16:25 »

Все подобные переменные имеют время жизни в пределах итерации for и формируются из неизменяемых в процессе работы цикла объектов.
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #14 : Август 01, 2018, 16:36 »

Судя по этому:
Текущего лога недостаточно. При подробном логгировании не воспроизводится
похоже, что какой-то объект таки не доживает до момента, когда им перестают пользоваться, и после его смерти пользуются его останками Улыбающийся. Либо race condition. ThreadSanitizer не пробовали?
Записан

Пока сам не сделаешь...
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 23.