Тема: TOCTOU
Показать сообщение отдельно
  #16  
Старый 05.06.2023, 10:53
Alexey Khromov
Guest
 
Сообщений: n/a
По умолчанию TOCTOU

Alexey Khromov написал(а) к Nil A в Jun 23 07:12:32 по местному времени:

Здраствуйте, Nil!

05 июн 23 03:55, Nil A -> Alexey Khromov:


NA> Это называется happy path, но бывают в жизни огорчения, когда без
NA> хлеба ешь печения.

Согласен. Отладка по-сути идет до сих пор)
Вот кусочек лога:
----- 04.06.2023 23:30:02 -----
FLAG_TOSS TOSS LINK .
----- 05.06.2023 00:06:02 -----
SEM_ECНO .
----- 05.06.2023 00:06:02 -----
FLAG_ECНO SCAN .
----- 05.06.2023 00:10:01 -----
FLAGTOSS TOSS LINK FLAGECНO SCAN .
----- 05.06.2023 00:22:01 -----
FLAG_POLL POLL .
----- 05.06.2023 00:36:01 -----
FLAG_TOSS TOSS LINK .
----- 05.06.2023 00:56:01 -----
FLAG_TOSS TOSS LINK .
----- 05.06.2023 00:58:01 -----
FLAG_TOSS TOSS LINK .
----- 05.06.2023 02:12:01 -----

NA> Обожди с FSM своим пока. Вот ты хочешь позвонить на линк / открыть
NA> базу / запустит тоссинг / .. Ты обнаруживаешь флаг, т.е. файл на
NA> файловой системе. Ты утверждаешь, что ты переименовываешь файл (скорее
NA> всего, потому что слышал, что это атомарная операция для ОС), и дальше
NA> делешь sleep(N), и проверяешь, может там кто-то ещё создал файл флаг?
Зачем же спать) Переименовал - обработал - удалил переименованное - проверил снова, что новых флагов нет (в процессе обработки могут возникнуть новые как в результате обработки, так и внешних событий). Точка ставится, когда в каталоге флагов самих флагов не осталось)

NA> понимание. Короче, это уже решённая задача.
Для программиста возможно, если он хоть чуточку воспринимает систему всю, от возможных NMI до соседнего краша процесса и отсвопленных участков кучи.

NA> Ещё один, жертва переводных книг. В su.c_cpp только что я спойлернул
Увы, до переводных книг не дошел. Просто пользуюсь Archlinux и смотрю за чейнджлогом. иногда.
А su.c_cpp подпышусь )

NA> эту тему. Якобы, мьютексы - это англицизм, надо говорить семафоры. Но
NA> семафоры - это такая штука, со счётчиком увнутри, а мьютекс - он
NA> просто залочка.
И товарищ Линус приравнял одно к другому. Точнее рекомендовал использовать семафоры с единицей, чтобы выкинуть лишнюю сущность.

AK>> Флаги просто более-менее универсальны и меньше зависят от
AK>> особенностей ОС.

NA> Ну.. в юниксах я во флаг-файл положу pid процесса, ещё и атомарно
NA> переименую такой файл. А что в венде класть туда, я не знаю, надо
В никсах touch flag создает файл нулевой длины, чего вполне хватает как флага.
pid в run-файлах нужен, чтобы кильнуть аккуратно то, что потребно без поиска по логам. СистемДы их сама для себя обычно и создает. В SystemV скриптами было тоже самое хорошим тоном. Upstart я пропустил мимо.

NA> вин32апи куприть.
В виндах то же самое

NA> будут уже требования регулятора.
152й ФЗ уже в печенках, не напоминай)

NA> Стандарт он такой, он должен очень обстрактно описать, чтобы, например
NA> C++ завёлся и на писюке, и на микроконтроллере, если он утверждает,
NA> что поддерживает стандарт.
К чему и велось. Стандарты они такие. В конкретной реализации можно подставить под некоторые особенности окружения проверки/костыли)

Alexey Khromov
--- GoldED+/LNX 1.1.5-b20230304
Ответить с цитированием