Tarbal 6 May 5, 2024 Posted May 5, 2024 · Report post Недавно нашел непростой баг. При переходе с 7 на 10 версию FreeRTOS система подвисала. Проблема оказалась была связана с мютексом. Дело в том, что мютекс имеет хозяина (тред, который его установил) и снять его может только тот кто поставил. В семерке это игнорировалось. В версии 10 тред, который не был хозяином использовал неинициалисированный указатель, что приводило к exception. Затруднило поиск отсутствие системы защиты памяти. Заменили мютекс на бинарный семафор и стало можно снимать его не тем тредом, который его установил. Зато хорошо запомнил чем отличаются вышеназванные семафоры. Quote Share this post Link to post Share on other sites More sharing options...
Viktuar 0 May 5, 2024 Posted May 5, 2024 · Report post А еще хозяин может сколько угодно раз устанавливать мьютекс, это не приведет к ошибке. И освободить его все-равно будет достаточно один раз. А семафор - если он не бинарный, aka флаг - на каждый set будет увеличивать значение на единичку и на каждый clear уменьшать на единичку. Quote Share this post Link to post Share on other sites More sharing options...
uriy 8 May 6, 2024 Posted May 6, 2024 · Report post Quote использовал неинициалисированный указатель Включайте assert такие места быстро найдутся 1 Quote Share this post Link to post Share on other sites More sharing options...