Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

.bsy файлы - кто будет вычищать?

0 views
Skip to first unread message

Nil A

unread,
May 23, 2022, 5:01:03 PM5/23/22
to
* Originally in ru.husky
* Crossposted in ru.binkd
Hello, All!

Пишу сразу в husky и binkd, ибо проблема как раз в этой паре - никто не
вычищает эти бизи файлики.

Сценарий такой, стартует бинк, и что-то идёт не так, например, на малютке
заканчивается память (не по вине бинка), или кто-то экспериментальную версию
запускает и оно крашится. Далее приходит хаски и не может ничего затоссить на
этот линк, потому что он сейчас занят. Приходит бинк и не может позвонить на
этот линк, потому что он уже занят. При этом внутри файлика есть PID, и кто-то
из этих двоих, либо бинк, либо хаски, или оба, могли бы глянуть на актуальность
блокировки.

Best Regards, Nil

Nil A

unread,
May 24, 2022, 1:01:02 AM5/24/22
to
Hello, Evgeny!

Tuesday May 24 2022 08:04, from Evgeny Chevtaev -> Nil A:

EC> # Remove old .bsy/.csy files (If some are left after a system crash).
EC> It would # be wise to set this to 12h on almost any system. (Note that
EC> binkd always # touches .bsy's/.csy's for active sessions) # #
EC> kill-old-bsy is OFF by default. # kill-old-bsy 12h

EC> Это разве не оно? В binkd.conf параметр имеется, значит всё давно
EC> придумано.

Точно, почти оно. Только 12 часов залипания - это по сегодняшним меркам уже
народ занервничает, хоть и фидо, хоть и "любительская сеть" ;-)
А можно было бы и без времени сделать, если смотреть на PID внутри. Только
вопрос, все ли туда PID пишут, но хаски и бинк пишут. Стоп, а что они туда
пишут под виндой? ;-)

Best Regards, Nil

Pavel Gulchouck

unread,
May 27, 2022, 11:01:03 AM5/27/22
to
Hi Nil!

24 May 22, Nil A ==> Evgeny Chevtaev:

EC>> # Remove old .bsy/.csy files (If some are left after a system crash).
EC>> It would # be wise to set this to 12h on almost any system. (Note that
EC>> binkd always # touches .bsy's/.csy's for active sessions) # #
EC>> kill-old-bsy is OFF by default. # kill-old-bsy 12h

EC>> Это разве не оно? В binkd.conf параметр имеется, значит всё давно
EC>> придумано.

NA> Точно, почти оно. Только 12 часов залипания - это по сегодняшним меркам
NA> уже народ занервничает, хоть и фидо, хоть и "любительская сеть"
NA> ;-)
NA> А можно было бы и без времени сделать, если смотреть на PID внутри.
NA> Только вопрос, все ли туда PID пишут, но хаски и бинк пишут.

Софт должен ориентироваться на стандарт (в данном случае BSO), а не на
фактическое поведение другого софта. Потому что поведение софта может меняться
в пределах стандарта, софта может быть много разного, и это путь к граблям.
По стандарту BSO внутри bsy пида может не быть. И это естестенно, ведь трудно
атомарно создать бзишку с пидом.

Кроме того, отсутствие процесса с прочитанным пидом не означает, что бзишку
можно удалять. Ведь процесс, создавший бзишку, может быть на другом сервере
(или на другой виртуалке - например, в докере) с другим пространством пидов.
BSO на сетевом диске, мейлер и тоссер на разных компах - не такая уж редкая
конфигурация.

И кроме того, между событиями "прочитали пид из бзишки" и "удалили бзишку"
могут быть другие события - например:
- мы прочитали пид из бзишки;
- процесс, установивший бзишку, успешно завершился, удалив за собой эту бзишку;
- мы проверили существование процесса с указанным pid - его нет, считаем бзишку
залипшей;
- новый процесс запустился и установил свою бзищку на этот же адрес;
- мы удалили эту новую бзишку и начали что-то делать с почтой параллельно с
новым процессом.

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

Было бы хорошо лочить бзишку на время сессии. Это можно сделать аккуратно и
правильно почти на всех системах, но нужна гарантия, что так себя ведёт весь
используемый софт, т.е. это получится уже не BSO, а немного другой тип
outbound. В нынешних условиях вряд ли реально.

В каком-то софте вместо бзишек использовались named mutex semaphores (TheBrake!
Mailer, если не ошибаюсь). Интересно, но не взлетело.

NA> Стоп, а что они туда пишут под виндой? ;-)

Lucky carrier,
Паша
aka g...@gul.kiev.ua

Nil A

unread,
May 27, 2022, 3:01:03 PM5/27/22
to
Hello, Pavel!

Friday May 27 2022 17:08, from Pavel Gulchouck -> Nil A:

PG> Софт должен ориентироваться на стандарт (в данном случае BSO), а не на
PG> фактическое поведение другого софта.
[...skipped...]

Курим spec, самодеятельность не приветствуется.

PG> Ведь процесс, создавший бзишку, может быть на другом сервере (или на
PG> другой виртуалке - например, в докере) с другим пространством пидов.
PG> BSO на сетевом диске, мейлер и тоссер на разных компах - не такая уж
PG> редкая конфигурация.
[...skipped...]

Вот реально объяснил, спасибо большое. Я прям почувствовал себя джуниором на
кодревью :-)

PG> И кроме того, между событиями "прочитали пид из бзишки" и "удалили
PG> бзишку" могут быть другие события - например:

TOCTOU (Time-of-check to time-of-use).

Best Regards, Nil
0 new messages