forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.FTN.DEVELOP

Ответ
 
Опции темы Опции просмотра
  #11  
Старый 02.06.2023, 22:51
Alexey Khromov
Guest
 
Сообщений: n/a
По умолчанию TOCTOU

Alexey Khromov написал(а) к Nil A в Jun 23 21:10:46 по местному времени:

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

02 июн 23 19:44, Nil A -> Alexey Khromov:

NA> Взаимозависимость - это когда возможна ситуация дедлока? Вроде бы
NA> никому из них нет необходимости держа один лок, при этом ещё хватать
NA> другой.
Это прописывание изменений в нескольких независимых проектах, с возможной в итоге несовместимостью с альтернативами.

NA> Флаги - это всё костыли.
Флаги - один из способов IPC (Inter-Process Communication, межпроцессное взаимодействие). Кстати, наиболее универсальный, работает от DOS и до наших дней.

NA> Для баз сообщений флаги не используются
NA> (кроме которых с именами эх на импорт и экспорт, чтобы не пробегаться
NA> по всем-всем эхам),
Это которые в конфиге "семафоры". По-сути флаги, в любом случае тоже IPC.

NA> потому что договорились о блокировке файла
NA> средствами ОС.
Где договорились?

NA> Так было во времена ДОСа, когда ты сидел в голдеде, потом выходил, всё
NA> паковал, и запускал мейлер. Ну или через какую-то много-задачность
NA> запускал мейлер и мог читать в голдеде, но тогда тоссер и упаковка
NA> запускалась полувручную.
А хаски или голдед не собираются под дос? Вроде вполне себе работают (если не считать баги djgpp). У меня и под FreeDOS заработали) Как раз в случае однозадачных ОС и полуручного запуска IPC наименее нужен. Еще Т-мыл например, то еще извращение, но умел много чего и много в каких ситуациях запускать - заменяя собой и планировщик и IPC.

Alexey Khromov
--- GoldED+/LNX 1.1.5-b20230304
Ответить с цитированием
  #12  
Старый 03.06.2023, 05:11
Nil A
Guest
 
Сообщений: n/a
По умолчанию TOCTOU

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

Нello, Alexey!

Friday June 02 2023 21:10, from Alexey Khromov -> Nil A:

NA>> Взаимозависимость - это когда возможна ситуация дедлока? Вроде бы
NA>> никому из них нет необходимости держа один лок, при этом ещё
NA>> хватать другой.
AK> Это прописывание изменений в нескольких независимых проектах, с
AK> возможной в итоге несовместимостью с альтернативами.

Для этого есть стандарты, и ещё эти комитеты, где чуваки собираются побухать. Только FTSC комитет давно уже потерял легитимность, тогда как IETF продолжал встречаться и даже в ковид/подстковид и принимать решения. Даже, умерший C++ прям фонтанирует после c++11, 14, 17, 20, 23, 26.. Почему C++ тоже умер? Шутка, он не умер, но многие говорил, что вот язык [...] это c++ киллер.

NA>> Флаги - это всё костыли.
AK> Флаги - один из способов IPC (Inter-Process Communication,
AK> межпроцессное взаимодействие). Кстати, наиболее универсальный,
AK> работает от DOS и до наших дней.

Тебе простой вопрос, как ты будешь старые флаг-файлы чистить? Ну понятно, что если забутился только, то можно их всех стереть, а так если? Pid внутрь класть, и проверять, если в системе такого процесса больше нет, то флаг-файл устарел. Или флаг файл ты будешь лочить, и тогда, если процесс помёр, и файл не удалил, то ОС освободит лок? Это я к тому, что флаги, в качестве IPC - это тот ещё геморой.

NA>> потому что договорились о блокировке файла
NA>> средствами ОС.
AK> Где договорились?

Вот, какой-то JAM-001.TXT есть, ниразу ни FTSC, ну просто они не можут ничего, кроме нового fta-1003 выпустить.

==Begin===
=====================================================================
Message base sharing and locking
---------------------------------------------------------------------
To allow several programs to access the message base at any given
time, region locking is used to protect the message base from being
corrupted during updates.

When an application needs to write to any of the message base files,
it must first attempt to lock the first byte of the .JНR (header)
file. If the lock call fails, the application must either fail or
attempt to lock the file again. The message base files may under no
circumstances be updated if the application cannot successfully lock
the .JНR file.

Note that data acquired (read) from the message base may not be used
when writing data to the message base, unless the application has
maintained a lock of the message base from the time the data was
acquired or the MODCOUNTER field is the same as when the data was
acquired.

The application must open the files in shareable (DENYNONE) read/
write or readonly mode. The only exception to this is an application
that requires exclusive access to the message base, such as a message
base maintenance utility, it should open the files in non-shareable
(DENYALL) read/write mode.
===End===

А вот ещё, FSP-1037, про Squish, тоже не случился, по известной причине

===Begin===
The "Update" frame type is not needed in modern software because
file locking feature is more convenient to prevent access to the
frame, but software SНOULD check and set frame type to "Update" when
works with this frame.
==End===

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #13  
Старый 04.06.2023, 16:32
Stas Mishchenkov
Guest
 
Сообщений: n/a
По умолчанию TOCTOU

Stas Mishchenkov написал(а) к Alexey Khromov в Jun 23 15:17:04 по местному времени:

Нi Alexey!

29 May 23 23:33, Alexey Khromov -> Nil A:

AK> А для венды nncron был, ЕМНИП. Ну, и планировщик собственный.

Есть ещё самописный на языке командной строки, что даёт хорошую переносимость. https://brorabbit.g0x.ru/files/win/sheduler.zip Выполняет все события внутри себя последовательно.

Нave nice nights.
Stas Mishchenkov.

--- Не откладывай пьянку на завтра, а секс на старость.
Ответить с цитированием
  #14  
Старый 05.06.2023, 01:32
Alexey Khromov
Guest
 
Сообщений: n/a
По умолчанию TOCTOU

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

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

03 июн 23 02:12, Nil A -> Alexey Khromov:

NA> Для этого есть стандарты, и ещё эти комитеты, где чуваки собираются
NA> побухать. Только FTSC комитет давно уже потерял легитимность, тогда
Но он все же есть, и стандарты есть. Хоть какие-то)

NA> как IETF продолжал встречаться и даже в ковид/подстковид и принимать
NA> решения. Даже, умерший C++ прям фонтанирует после c++11, 14, 17, 20,
NA> 23, 26.. Почему C++ тоже умер? Шутка, он не умер, но многие говорил,
NA> что вот язык [...] это c++ киллер.
Потому что основная документация ныне существующих ОС и их интерфейсы - на нем.
Был бы Оберон основной осью - писали б на паскале) Шутка.
Но в Колибри, например, основной язык ассемблер, т.к. интерфейс системы на нем.

NA>>> Флаги - это всё костыли.
AK>> Флаги - один из способов IPC (Inter-Process Communication,
AK>> межпроцессное взаимодействие). Кстати, наиболее универсальный,
AK>> работает от DOS и до наших дней.

NA> Тебе простой вопрос, как ты будешь старые флаг-файлы чистить? Ну
У меня старые не остаются. Все обрабатываются. При возможном сбое лишняя обработка не изменяет состояние системы, флаг обрабатывается. Перед обработкой флаг переименовывается, если в процессе обработки появился новый флаг - новый цикл обработки.
Классический конечный автомат (ака finite state machine)

NA> я к тому, что флаги, в качестве IPC - это тот ещё геморой.
Любой IPC геморрой. Можно даже в нынешние споры по этому поводу у Торвальдса погрузится, он там семафоры переделал кажись, что они теперь всегда счетчиками являются. Флаги просто более-менее универсальны и меньше зависят от особенностей ОС.

AK>> Где договорились?
NA> Вот, какой-то JAM-001.TXT есть, ниразу ни FTSC, ну просто они не можут
NA> А вот ещё, FSP-1037, про Squish, тоже не случился, по известной
NA> причине
Как видишь, это не "договорились", а рекомендация в описании формата и порядка работы с базой сообщений. И навряд ли эта рекомендация учитывала все файловые системы и ОСи, на которых впоследствии работал этот формат. И не должны были, ОСи менятся, мир меняется - либо адаптировать существующие форматы и логику в новую среду либо (как Афтершок, например), собирать новое.

Поправил свой ежемесячный обработчик по твоей рекомендации:

if [ -n "$BIN_LSOF" ]; then
if [ $($BIN_LSOF -u $FIDOUSER | grep "$FIDOBASE/msgbase"| wc -l ) -eq 0 ]; then
$BIN_SQPACK "*"
fi
else
$BIN_SQPACK "*"
fi

Alexey Khromov
--- GoldED+/LNX 1.1.5-b20230304
Ответить с цитированием
  #15  
Старый 05.06.2023, 07:22
Nil A
Guest
 
Сообщений: n/a
По умолчанию TOCTOU

Nil A написал(а) к Alexey Khromov в Jun 23 03:55:56 по местному времени:

Нello, Alexey!

Sunday June 04 2023 23:44, from Alexey Khromov -> Nil A:

NA>> Для этого есть стандарты, и ещё эти комитеты, где чуваки
NA>> собираются побухать. Только FTSC комитет давно уже потерял
NA>> легитимность, тогда
AK> Но он все же есть, и стандарты есть. Хоть какие-то)

Я бы сказал, что он был, в прошедшем времени. Сегодня он не легитимен. Хотя, я в понятиях путаюсь, он выбрал легитимно, путём голосования большинства, просто у него кнопок и рычажгов никаких нет, чтобы хоть что-то сделать. Это сборище чуваков, которые обновляют своё имя в FTA-10003, на этом их активность и заканчивается, памятник чтоли.

AK> Был бы Оберон основной осью - писали б на паскале) Шутка. Но в
AK> Колибри, например, основной язык ассемблер, т.к. интерфейс системы
AK> на нем.

Если бы под Андроид и Айоэс писали бы как под ПалмОС, т.е. на C++, яб написал своего хотдога. Но Палм, и Псион, и даже до небес взлетевший Симбиан, все померли. Кстати, есть версия, где пальмос на линукс-кернеле живёт, но так ни одного устройства мы и не увидели.

А померли они все, потому что есть треугольник, почти что Бермудский, где все/всё пропадает. Треугольник - быстро, дёшево, хорошо. Ах нет, не этот. Ну короче, тот, чтобы и тайм-ту-маркет был примерно три-месяца, и чтобы девелоперов было много, за три копейки, и все потом взаимозамеляемые были. Ассемблер не выдержал сразу. Си/плюсы чуть попозже тоже не выдержали.

NA>> Тебе простой вопрос, как ты будешь старые флаг-файлы чистить? Ну
AK> У меня старые не остаются. Все обрабатываются.

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

AK> При возможном сбое лишняя обработка не изменяет состояние системы,
AK> флаг обрабатывается. Перед обработкой флаг переименовывается, если в
AK> процессе обработки появился новый флаг - новый цикл обработки.
AK> Классический конечный автомат (ака finite state machine)

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

NA>> я к тому, что флаги, в качестве IPC - это тот ещё геморой.
AK> Любой IPC геморрой.

С появлением много-ядер, разруливанием потоков и процессов, стало уделом не только синьёров, но и от джунов уже требуется минимальное понимание. Короче, это уже решённая задача.

AK> Можно даже в нынешние споры по этому поводу у Торвальдса погрузится,
AK> он там семафоры переделал кажись, что они теперь всегда счетчиками
AK> являются.

Ещё один, жертва переводных книг. В su.c_cpp только что я спойлернул эту тему. Якобы, мьютексы - это англицизм, надо говорить семафоры. Но семафоры - это такая штука, со счётчиком увнутри, а мьютекс - он просто залочка.

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

Ну.. в юниксах я во флаг-файл положу pid процесса, ещё и атомарно переименую такой файл. А что в венде класть туда, я не знаю, надо вин32апи куприть.

AK>>> Где договорились?
NA>> Вот, какой-то JAM-001.TXT есть, ниразу ни FTSC, ну просто они не
NA>> можут А вот ещё, FSP-1037, про Squish, тоже не случился, по
NA>> известной причине
AK> Как видишь, это не "договорились", а рекомендация в описании формата и
AK> порядка работы с базой сообщений.

Это всега были и будут рекоммендации, и даже этот НTTP/2 сегодняшний. А вот когда начёшь личнные данные хранить, или номера кредиток, тогда будут уже требования регулятора.

AK> И навряд ли эта рекомендация учитывала все файловые системы и ОСи, на
AK> которых впоследствии работал этот формат.

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

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #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
Ответить с цитированием
  #17  
Старый 25.06.2023, 08:03
Eugene Subbotin
Guest
 
Сообщений: n/a
По умолчанию Re: TOCTOU

Eugene Subbotin написал(а) к Nil A в Jun 23 10:55:28 по местному времени:

03.06.2023 06:12, Nil A пишет:

AK>> Флаги - один из способов IPC (Inter-Process Communication,
AK>> межпроцессное взаимодействие). Кстати, наиболее универсальный,
AK>> работает от DOS и до наших дней.
NA> Тебе простой вопрос, как ты будешь старые флаг-файлы чистить? Ну понятно,
NA> что если забутился только, то можно их всех стереть, а так если? Pid внутрь
NA> класть, и проверять, если в системе такого процесса больше нет, то
флаг-файл
NA> устарел. Или флаг файл ты будешь лочить, и тогда, если процесс помёр, и
файл
NA> не удалил, то ОС освободит лок? Это я к тому, что флаги, в качестве IPC -
NA> это тот ещё геморой.

Работа с флагами прекрасно обвешивается через incron

--
... It's full of stars!

--- Mozilla/5.0 (Macintosh; Intel Mac OS X 13.4; rv:91.0) Gecko/20100101 Firefox/91.0 SeaMonkey/2.53.16
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 00:48. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot