Size: a a a

2021 April 30

c

codingteam@cjr in codingteam
Minoru
т.е. один поток делает getenv, второй тут же делает setenv, и в первом потоке указатель внезапно становится невалидным
источник

t

ttldtor in codingteam
и не будет ни гонок ни х-ёнок
источник

t

ttldtor in codingteam
но если ты используешь либу, которая незаметно работает с переменными окружения, то либо он адолжна предоставить тырфейс для получения и установки их, либо не стоит её юзать, эту либу
источник

t

ttldtor in codingteam
и так со всей подобной дрянью
источник

t

ttldtor in codingteam
и без ансейфов, между прочим решается
источник

t

ttldtor in codingteam
не надо размазывать говно по коду
источник

c

codingteam@cjr in codingteam
Minoru
да, ты прав, должен быть «владелец». В нашем случае таким владельцем является libc, но авторы двух популярных реализаций (glibc и musl) сказали, что «просто не надо вызывать setenv в многопоточном окружении», и их нельзя заставить поменять мнение, потому что POSIX, на который все молятся, тоже ничего такого не предписывает
источник

t

ttldtor in codingteam
кажется, ты не понимаешь меня
источник

c

codingteam@cjr in codingteam
Minoru
возможно!
источник

t

ttldtor in codingteam
пишем надстройку над функциями либцов и говорим, чтобы пользовались только этой надстройкой
источник

t

ttldtor in codingteam
а в надстройку уже все будут ходить за получением\изменением переменных окружения или чего-то такого
источник

t

ttldtor in codingteam
это как конфиг читать\писать у приложения
источник

t

ttldtor in codingteam
я не люблю "синглтоны", но особого выбора нет
источник

c

codingteam@cjr in codingteam
Minoru
и куда эту надстройку вынести? В отдельную либку?
источник

D

Devel29A in codingteam
Во, кстати, я тут как раз собирался впилить в одну компоненту некий конфиг менеджер. Чтобы подобное говнище через него шло
источник

c

codingteam@cjr in codingteam
Minoru
иными словами, ты предлагаешь починить это в обход libc?
источник

t

ttldtor in codingteam
либку, на расте или том языке, на котором ты пишешь.
Можешь вообще перед началом использования, копировать переменные окружения и с ними работать, а после работы писать (только нахрен они кому сдались после работы, если это всё относится только к процессу этому)
источник

D

Devel29A in codingteam
runtool :)
источник

c

codingteam@cjr in codingteam
Minoru
@ttldtor: нет, погоди, эту либку должны использовать *все* кто выполняется в данном процессе, иначе у разного кода будет разное представление о переменных окружения
источник

t

ttldtor in codingteam
не вижу проблемы
источник