LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Даже не знаю, что можно считать «глупой и страшной» ошибкой.

Ошибки по большей части банальны - ошибки копипаста, когда в однотипном наборе присваиваний забыли поменять одну из переменных, ошибки в сравнениях, когда вместо =< стоит < или наоборот, ошибки смещения на 1, перепутанные единицы измерения, когда метры с футами в одном вычислении фигурируют и т.п. А вот последствия ошибок порой бывают действительно и глупые, и страшные.

У меня сейчас в рабочем списке фигурирует на исправление еще одна типичная ошибка многопоточного приложения:

  • Поток А запускает поток Б.
  • Поток Б ставит в очередь коллбек, который должен быть исполнен в потоке А.
  • Поток А до обработки коллбека завершает работу потока Б и освобождает общие ресурсы.
  • Срабатывает коллбек, и программа обращается к освобождённой памяти.

Исходная версия wandrien, :

Даже не знаю, что можно считать «глупой и страшной» ошибкой.

Ошибки по большей части банальны - ошибки копипаста, когда в однотипном наборе присваиваний забыли поменять одну из переменных, ошибки в сравнениях, когда вместо =< стоит < или наоборот, ошибки смещения на 1, перепутанные единицы измерения, когда метры с футами в одном вычислении фигурируют и т.п. А вот последствия ошибкой порой бывают действительно и глупые, и страшные.

У меня сейчас в рабочем списке фигурирует на исправление еще одна типичная ошибка многопоточного приложения:

  • Поток А запускает поток Б.
  • Поток Б ставит в очередь коллбек, который должен быть исполнен в потоке А.
  • Поток А до обработки коллбека завершает работу потока Б и освобождает общие ресурсы.
  • Срабатывает коллбек, и программа обращается к освобождённой памяти.