LINUX.ORG.RU

Переполнение кучи в glibc и другое

 ,


0

4

Рунет сегодня ожил, а тут свежачок подвезли:

https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=6bd0e4efcc78f3c0115e5ea9739a1642807450da;hp=8aeec0eb5a18f9614d18156f9d6092b3525b818c

И ещё другие баги в glibc 2.37 типа порчи памяти в qsort.

Если бегло взглянуть на код исправления по ссылке, ясно, что это не что-то совсем уж тривиальное, т.е. именно те случаи, ради которых выдумываются и продвигаются все эти ады и расты. Но так же понятно, что в существенное количество устройств такие баги даже не смогут теоретически попасть, потому что будут исправлены ещё до того, как конторы дойдут до версии glibc 2022г.в.

Перемещено hobbit из talks

★★★★★
Ответ на: комментарий от cumvillain

Alpine Linux с musl вместо glibc.

Кстати надо проверить а то я только Linux/glibc и FreeBSD проверяю обычно, и ещё давно проверял OpenBSD и недавно одного наследника соляриса - для него пришлось фиксить кстати т.к. в нём grep -F не было и strdup() в тех флагах gcc что я использую.

Но скорее всего всё будет норм (apline+musl), не думаю что там отличий больше чем между линуксом и бсд.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Потому что ты не знаешь C и пишешь на нём неправильно. В следующей версии компилятора твой код сломается и ты будешь верещать про неправильные компиляторы.

Надо просто знать что делаешь и проблем не будет.

Так в этом-то и проблема: ты вообще не понимаешь, что ты делаешь. А мы над тобой поэтому тут ржём и разводим тебя на откровения. Над SVN и RCE выше я рыдал минут 10.

Нет, нету. Либо это нестандартный порт C, потому что в стандарте C написано, что NULL должен приводиться к 0 и никак иначе.

Ты не дочитал. NULL приводится к 0, да, но при этом не содержит 0 в своём нативном представлении (на это требования нигде не было). И тайпкаст указателя в int там не no-op как обычно везде, а типа такогоif(p==NULL) return 0; else return (native_typecast_int)p;

А… так в C вообще не написано ничего про битовое представление указателей. Оно может быть вообще любым. Но при выводе на печать там всё равно будет 0, потому что каст к инту.

Типичный сишник лол. Языка не знает, пишет говнокод который только у него работает и ломается за пределами его сборочной среды.

Ты не прав.

Я прав. Мне пару раз неплохие деньги даже платили за то, чтобы я чинил код вот таких говнокодеров, которые не могут писать код согласно стандарту.

hateyoufeel ★★★★★
()
Ответ на: комментарий от firkax

Если пользоваться нормальным компилятором и не включать жёсткие режимы оптимизации то всё норм

Если пользоваться нормальной сетью обученной на 80+ языках программирования типа starcoder и не включать жесткие режимы FIM (fill in the middle) то всё норм.

Obezyan
()
Последнее исправление: Obezyan (всего исправлений: 1)
Ответ на: комментарий от firkax

Кстати надо проверить а то я только Linux/glibc и FreeBSD проверяю обычно

Ага, а partial write со структурой размером в килобайт – нет:

src/dashboard.c:  if(pwrite(fd, &row, sizeof(row), sizeof(row)*(off_t)my_num)<0) {

Короче, как всегда, лол. Гонору много, а внутри сранина какая-то.

cumvillain
()
Ответ на: комментарий от hateyoufeel

Так в этом-то и проблема: ты вообще не понимаешь, что ты делаешь.

Нет это ты чего-то не понимаешь. А у меня всё работает. Задачи «чтоб код компилировался где угодно и чем угодно» в большинстве случаев изначально нет. Но когда она есть - требования к коду меняются, да.

А… так в C вообще не написано ничего про битовое представление указателей. Оно может быть вообще любым. Но при выводе на печать там всё равно будет 0, потому что каст к инту.

Битовое представление это тот адрес, по которому будет произведена попытка чтения при разыменовании. И для NULL там подставлялся заведомо недоступный адрес (какое-нить 0xEEEE0000), в то время как настоящий нулевой адрес был доступен для чтения/записи и программу при разыменовании не крашил. Куда там тайпкастился при этом указатель на настоящий ноль (не NULL) я не помню, вероятно тоже в 0. Практика сомнительная, поэтому сейчас её даже с читаемым нулём не используют насколько я знаю.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Так в этом-то и проблема: ты вообще не понимаешь, что ты делаешь.

Нет это ты чего-то не понимаешь. А у меня всё работает.

Ага. Типичный сишник :DDDDD

Главное, про неправильные компиляторы побольше пиши.

Задачи «чтоб код компилировался где угодно и чем угодно» в большинстве случаев изначально нет. Но когда она есть - требования к коду меняются, да.

У кого не стоит? Типичный случай: берёшь стороннюю сишную библиотеку, чтобы не писать велосипеды с нуля, а она с твоей версией компилятора сыпется в пух и прах, потому что автор – тоже типичный сишник и у него всё работает (c).

После чего выкидываешь этот говноязык вместе с его говнобиблиотеками и пишешь спокойно на каких-нибудь Rust, Go или вообще хачкелле.

А… так в C вообще не написано ничего про битовое представление указателей. Оно может быть вообще любым. Но при выводе на печать там всё равно будет 0, потому что каст к инту.

Битовое представление это тот адрес, по которому будет произведена попытка чтения при разыменовании. И для NULL там подставлялся заведомо недоступный адрес (какое-нить 0xEEEE0000), в то время как настоящий нулевой адрес был доступен для чтения/записи и программу при разыменовании не крашил. Куда там тайпкастился при этом указатель на настоящий ноль (не NULL) я не помню, вероятно тоже в 0. Практика сомнительная, поэтому сейчас её даже с читаемым нулём не используют насколько я знаю.

Блаблаблаблабла…

В стандарте C написано, что константа NULL должна быть эквивалентна (void*)0 и при касте к численному типу должна приводится к нулю в этом типе. Если у тебя NULL равен чему-то ещё, то эта реализация не соответствует стандарту языка.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от cumvillain

Записи мусора там тоже нет. Собственно, я согласен что это место не совсем хорошее, но:

  1. я не просил искать все баги, речь шла только про битьё памяти (читалка этого же файла от случившегося partial write работу свою не нарушит - она рассчитана на мусор в этом файле, затем чтобы не делать flock - максимум выведет некорректную информацию с остатками предыдущего запроса в строчке списка процессов)

  2. там ниже подписано TODO

  3. partial write на куске меньше 1кб при записи в файл на диске на практике практически невозможен

  4. это вообще побочный полуотладочный функционал

  5. само fproxy в целом много где с плохим качеством кода, но битья памяти и критических багов там нет - речь шла именно про них.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

я не просил искать все баги, речь шла только про битьё памяти

Я не искал баги. Я открыл твой код, увидел кошмарное форматирование, прогнал через индентер и увидел вот это. Больше я ничего особо не читал.

там ниже подписано TODO

И чо?

partial write на куске меньше 1кб при записи в файл на диске на практике практически невозможен

Кто тебе сказал?

это вообще побочный полуотладочный функционал

Ну так-то весь этот проект не нужен. До какого уровня планку-то понижаем?

само fproxy в целом много где с плохим качеством кода, но битья памяти и критических багов там нет - речь шла именно про них.

Этого мы не знаем, потому что никто не проводил аудит твоего кода.

cumvillain
()
Ответ на: комментарий от hateyoufeel

У кого не стоит? Типичный случай: берёшь стороннюю сишную библиотеку, чтобы не писать велосипеды с нуля, а она с твоей версией компилятора сыпется в пух и прах, потому что автор – тоже типичный сишник и у него всё работает

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

В стандарте C написано, что константа NULL должна быть эквивалентна (void*)0 и при касте к численному типу должна приводится к нулю в этом типе. Если у тебя NULL равен чему-то ещё, то эта реализация не соответствует стандарту языка.

Ещё раз повторю: тайпкаст там работал как ты описываешь. Неожиданным же было то, что NULL!=&нулевая_ячейка.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Если я распространяю библиотеку (в исходниках) и мне про неё пришлют багрепорт что она где-то не компилируется - я это разумеется посчитаю багом.

Про не компилируется никто не говорил. Я написал про «не работает», потому что в коде UB.

Багом-то ты посчитаешь, но на твоей версии компилятора же работает. Неужели будешь другой компилятор ставить?

Ты это тоже багом посчитаешь?

UB в коде на C – это баг. Потому что в стандарте языка написано, что корректная программа на C не содержит UB.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от cumvillain

Кто тебе сказал?

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

Первое соображение - partial write может случиться не меньше чем по границе страницы, которая давным давно нигде меньше 4к не бывает. Но поскольку длина структуры не кратна 1к, то да, какие-то из них эту границу пересекают. Второе соображение: одна страница в буфер влезла, вторая уже нет. Это значит что либо у ядра закончилась память, либо случилось disk full (и что с ним собственно делать?), либо файл лежит на каком-то странном fusefs. Итог такой: обрабатывать ошибки записи в дашборд всё равно неизвестно как, их тупо некуда вывести даже кроме лога в который всё равно никто смотреть не будет (а если у ядра кончилась память то и в лог мы ничего записать не сможем), на работу сервера они не влияют, поэтому игнорируем и подпишем TODO что надо бы потом сделать красивее, когда найдётся ненужное время на бесполезное занятие.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

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

UB в коде на C – это баг. Потому что в стандарте языка написано, что корректная программа на C не содержит UB.

Баг это когда скомпилированная программа неправильно себя ведёт.

firkax ★★★★★
()
Ответ на: комментарий от firkax

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

Господи, вас клонируют что ли?

- Смотри, у тебя баг в сишке!

- ХУРР ДУРР А ТЫ ОБЪЯСНИ ПОЧЕМУ ПОЛЬЗОВАТЕЛЯ ЭТО БУДЕТ ВОЛНОВАТЬ

Первое соображение - partial write может случиться не меньше чем по границе страницы, которая давным давно нигде меньше 4к не бывает.

Это соображение ты сделал, прости меня, на основании чего?

Второе соображение: одна страница в буфер влезла, вторая уже нет. Это значит что либо у ядра закончилась память, либо случилось disk full (и что с ним собственно делать?), либо файл лежит на каком-то странном fusefs. Итог такой: обрабатывать ошибки записи в дашборд всё равно неизвестно как, их тупо некуда вывести даже кроме лога в который всё равно никто смотреть не будет (а если у ядра кончилась память то и в лог мы ничего записать не сможем), на работу сервера они не влияют, поэтому игнорируем и подпишем TODO что надо бы потом сделать красивее, когда найдётся ненужное время на бесполезное занятие.

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

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Ответ на: комментарий от hateWin

доказать, что возврат reed() можно не проверять,

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

Ничего кроме попыток всяких троллей выковырять из своей задницы хоть какой-то практический пример там вообще не было.

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

Прямо как ЛГБТшники живущие в своём манямирке где man can be pregnant. У этих man can be pregnant, а у тех read после open может вернуть ошибку которую имеет смысл обрабатывать.

а мазать мимо буфера – это не баг, а фича

А что плохого может быть в записи/чтении адреса который не принадлежит какому-то буферу? Я вот постоянно так делаю. То какой-нибудь 0x40020000 нужен, то 0x40011004 то ещё куда-то, вне пределов каких-то там буферов. :)

Ещё я обожаю самомодифицирующийся код, всякие goto, включая calculated, всевозможные битовые операции, alloca, void* арифметику, inline asm и ещё 100500 вещей которые ваша гнилая секта считает ересью и смертным грехом.

Вы, пропагандисты new normal в программировании можете себе представить, насколько ваша new normal убога и ограничена? :)

А ещё, очень интересно, существует ли хотя бы один, скажем, любораст, который принципиально и осознанно не носил намордник во время коронабесия? Кто-нибудь? Ась? Вот. Это, собственно, и всё что нужно знать про апологетов всяких «безопасных» язычков в частности и good programming practices в целом.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

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

Стасон держит уровень: повесточка появилась уже в третьем абзаце.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Ответ на: комментарий от Stanson

Ещё я обожаю самомодифицирующийся код, всякие goto, включая calculated, всевозможные битовые операции, alloca, void* арифметику, inline asm и ещё 100500 вещей которые ваша гнилая секта считает ересью и смертным грехом.

И всё это ночью под столом, пока никто не видит и все спят?

seiken ★★★★★
() автор топика
Ответ на: комментарий от Stanson

Прямо как ЛГБТшники живущие в своём манямирке где man can be pregnant. У этих man can be pregnant, а у тех read после open может вернуть ошибку которую имеет смысл обрабатывать.

И геи в четвертом. Стасон, ты бы вылезал уже из чулана. Я понимаю что сейчас в России быть геем опасно, но если ты не перестанешь скрывать кто ты есть, у тебя будет язва и ранняя смерть.

cumvillain
()
Ответ на: комментарий от cumvillain

Это очень смешно, что у вас настолько пригорает, от того, что тут не банят всех тех, кто не относится к вашей секте. Продолжайте дальше, закапывайте себя как можно глубже. :)

Для всех остальных - спорим, что ни один из этих сектантов в своей пропаганде никогда не продемонстрирует ни одного крупного взлетевшего проекта написанного согласно их догмам. Ни сегодня, ни через 10 лет, ни через 100.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Это очень смешно, что у вас настолько пригорает, от того, что тут не банят всех тех, кто не относится к вашей секте. Продолжайте дальше, закапывайте себя как можно глубже. :)

Стасон, тут было четыре страницы обычного срача про сишку. Никто не вспоминал секту, геев и аллаха, был чисто технический срач.

Пришел ты и принес сюда свое гейство. Найди уже себе мужика, ну.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 1)
Ответ на: комментарий от Stanson

Вообще-то в том треде мне никто так и не ответил в какой же конкретно реальной ситуации при чтении с локального диска может быть такое, что open успешен, а следующий за ним read вернёт ошибку

Вообще, ты как всегда лжешь. Тебе привели пример. Как минимум, внезапный отвал диска.

Прямо как ЛГБТшники живущие в своём манямирке где man can be pregnant. У этих man can be pregnant, а у тех read после open может вернуть ошибку которую имеет смысл обрабатывать

https://en.wikipedia.org/wiki/The_Daily_Stormer

The Daily Stormer is an American far-right, neo-Nazi, white supremacist, misogynist, Islamophobic, antisemitic, and Holocaust denial commentary and message board website that advocates for a second genocide of Jews

Тебя там заждались. А мне надоело читать гневные речи против ЛГБТ вместо технических аргументов.

А что плохого может быть в записи/чтении адреса который не принадлежит какому-то буферу?

У меня жир с монитора потек.

Вы, пропагандисты new normal в программировании можете себе представить, насколько ваша new normal убога и ограничена? :)

Мы – сторонники адекватности. А некомпетентные фанатики древних говноязычков, прикрывающие свою техническую безграмотность лозунгами альтрайтов, вызывают у нас истерический хохот вперемешку с отвращением.

hateWin ★☆
()
Последнее исправление: hateWin (всего исправлений: 1)
Ответ на: комментарий от hateWin

Тебе привели пример. Как минимум, внезапный отвал диска.

Ну да - та самая клоунада. И какой же смысл при отвале диска (!) в системе обрабатывать какие-либо ошибки в какой-то юзерспейсной прожке? Тут дом сгорел нахер, а вы рассказываете как важно в этом доме в этот момент носок сложить согласно священному писанию.

Мы – сторонники адекватности.

Именно это и заявляют все без исключения «прогрессивные» от BLM до эколожцев. Кто бы сомневался.

вызывают у нас истерический хохот вперемешку с отвращением.

Вот только в отличии от вас, нормальным людям совершенно наплевать что о них думают какие-то сектанты. Так что хохочите сколько влезет. Только учтите, что от этого взлетевших проектов на ваших «безопасных» язычках не появится.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Именно это и заявляют все без исключения «прогрессивные» от BLM до эколожцев. Кто бы сомневался.

Канешн, поэтому мы принесли раст сразу в твое ядро. Наслаждайся!

cumvillain
()
Ответ на: комментарий от Stanson

Ну да - та самая клоунада. И какой же смысл при отвале диска (!) в системе обрабатывать какие-либо ошибки в какой-то юзерспейсной прожке?

Лол. В твоей реальности диск в системе может быть только один? В твоей реальности система не может копировать себя с диска в память? Ты из параллельной реальности сюда пишешь?

hateWin ★☆
()
Ответ на: комментарий от hateWin

Я не понимаю почему все тут про отказ диска заговорили. pwrite() может вернуть меньше, чем ты просил его записать. Это не будет ошибкой.

В мане же написано, кек:

The  number  of  bytes  written  may  be  less  than  count  if,  for  example, there is insufficient space on the underlying physical medium, or the RLIMIT_FSIZE resource limit is encountered (see setrlimit(2)), or the call was interrupted by a signal handler after having written less  than  count bytes. (See also pipe(7).)
cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 2)
Ответ на: комментарий от firkax

прибавить к джавовой ссылке единицу, чтобы оказаться на следующем байте памяти?

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

hateWin ★☆
()
Ответ на: комментарий от Stanson

Именно это и заявляют все без исключения нормальные люди, которые обсуждают технические вопросы в технических темах, а не выражают свою болезненную ненависть к людям

Починил

hateWin ★☆
()
Ответ на: комментарий от hateWin

А можно узнать, что сугубо технического вообще сделали апологеты «безопасного» язычка? А, ничего. Понятно.

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

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

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

Примеры:

Объективная реальность: Абсолютное большинство софта написано на сишечке. Значит атаковать надо сишечку. Рассказывать какая она плохая. При этом исключительно с той стороны, которая не имеет вообще никакого отношения к тому, почему на самом деле большинство софта написано на сишечке. Например, рассказывать что сишечка «небезопасна» и на ней можно написать что-то неправильно, не так как дозволяют догматы.

Объективная реальность: Большинство автомобилей используют ДВС. Рассказывают про то, какие ДВС неэкологичные. Хотя экологичность ДВС не имеет никакого отношения к причинам по которым большинство автомобилей используют ДВС.

Объективная реальность: Большинство научных открытий совершено белыми людьми. Рассказывают про white supremacy, хотя она никакого отношения к причинам по которым большинство открытий сделано белыми людьми не имеет.

Объективная реальность: Люди поддерживают свою численность традиционным образом. Рассказывают про то, что традиционные отношения непрогрессивны и всё такое. При том, что причина по которой люди поддерживают свою численность именно традиционным способом не имеет никакого отношения к прогрессивности или непрограссивности оных.

И т.д.

Если удаётся посеять сомнения в одной из составляющих объективной реальности, некоторые люди теряют возможность критически мыслить, потому что не могут уложить у себя в голове одновременно наблюдаемую объективную реальность и внедрённую «неприемлемость» одной из её составляющих.

В результате, из таких «сломавшихся» получается зомби, которому можно без малейших проблем вложить в голову и заставить использовать всё, что демагогам и сектантам заблагорассудится.

Что из этого получается - любой может увидеть самостоятельно. Люди покупающие «экологичные» электромобили, люди использующие «приватные» мессенджеры с серверами принадлежащими чужому дяде, люди покупающие «прогрессивные» умные колоонки, люди использующие языки с единственным хранилищем библиотек принадлежащим неизвестно кому и т.д.

Им нужно больше зомби, только и всего.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Объективная реальность: Абсолютное большинство софта написано на сишечке. Значит атаковать надо сишечку.

Нет, абсолютное большинство софта написано на питоне. Ещё где-то рядом плюсы. И джава. Но точно не си :)

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 2)
Ответ на: комментарий от hateWin

В твоей реальности диск в системе может быть только один?

Это в твоей реальности кто-то будет запускать принципиально минималистичный xmpp-client на машине у которой больше одного физического диска. С таким же успехом можно пространно рассуждать о работе lwIP на машине с гигагерцовым процессором, гигабайтами памяти и гигабитными сетевухами. Или о вычёрпывании 200-литровой бочки чайной ложечкой.

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

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

Stanson ★★★★★
()
Ответ на: комментарий от cumvillain

Нет, абсолютное большинство софта написано на питоне. Ещё где-то рядом плюсы. И джава. Но точно не си :)

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

А можно узнать, что сугубо технического вообще сделали апологеты «безопасного» язычка? А, ничего. Понятно.

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

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

Твои попытки оправдать свою болезненную озабоченность темой ЛГБТ выглядят довольно жалко.

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

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

Объективная реальность: Абсолютное большинство софта написано на сишечке

Пруф или не было.

демагогия и хейтспич проскипаны

Я же довольно прозрачно намекнул тебе, где уместны твои пространные речи о жидомасонских заговорах и геях-ниггерах с Нибиру? Ты читать разучился?

hateWin ★☆
()
Ответ на: комментарий от cumvillain

Ты так и не привёл условия, в которых это может случиться. И заодно своим идиотским вопросом

Это соображение ты сделал, прости меня, на основании чего?

показал полное непонимание принципов работы современных ОС в плане ввода-вывода.

firkax ★★★★★
()
Ответ на: комментарий от Stanson

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

Чтобы open был успешен, достаточно прочесть данные из иноды. При этом в первом секторе данных файла вполне может оказаться что-то битое и read вернёт ошибку.

firkax ★★★★★
()
Ответ на: комментарий от hateWin

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

Про линейную адресацию вообще ерунду написал, у меня в компе их целых две: одна - линейная вдоль адресного пространства процесса, вторая - линейная вдоль нативного адресного пространства проца, страницы второй мапятся в каком-то порядке на первую.

Прибавление единицы использует первую.

firkax ★★★★★
()
Ответ на: комментарий от Stanson

Это в твоей реальности кто-то будет запускать принципиально минималистичный xmpp-client на машине у которой больше одного физического диска

Какое забавное самооправдание. Сладкий, даже у меня в грёбанном десктопе три накопителя. А немного раньше, до того, как я отключил один сбойный хард, было четыре. Если бы весь используемый мной софт был написан такими альтернативно умными людьми как ты, я бы наблюдал сегфолты и битую память. В лучшем случае. Поэтому именно ты и подобные тебе клоуны

оторваны от реальности напрочь

а не я.

Вы полагаете что возведение формализма в абсолют это замечательно

Обработка граничных случаев – это возведение формализма в абсолют? После этого ты еще заикаешься о критическом мышлении и аналитическом складе ума? Ты дурак или лицемер?

hateWin ★☆
()
Ответ на: комментарий от Stanson

Я вообще-то про тот софт который люди реально используют в своей жизни

Я тоже. Большинство людей пользуются мобилками (жава), вебом (golang, питон, js, php) и банками (COBOL, мать его, COBOL). Твоя унылая сишка и рядом не валялась.

cumvillain
()
Ответ на: комментарий от firkax

Ты так и не привёл условия, в которых это может случиться

Сишные программы работают только в определенную фазу луны, ага. Это мы уже поняли.

показал полное непонимание принципов работы современных ОС в плане ввода-вывода

Жги ещё, лол.

cumvillain
()
Ответ на: комментарий от firkax

Не придирайся к мелочам

Это не мелочи. Ты не понимаешь, как организована работа с памятью в современных процессорах. Поэтому твой аргумент не действителен.

Про линейную адресацию вообще ерунду написал, у меня в компе их целых две: одна - линейная вдоль адресного пространства процесса, вторая - линейная вдоль нативного адресного пространства проца, страницы второй мапятся в каком-то порядке на первую

Какая феерическая пурга. Сишники, которые хвалятся тем, что их язык якобы близок к железу, не понимают, как работает адресация памяти.

hateWin ★☆
()
Ответ на: комментарий от cumvillain

Большинство людей пользуются мобилками

Посчитай сколько в мобилке периферии, фирмварь которой написана, внезапно, на сишечке. Все эти магнетометры, голубозубы, GNSS, NFC и т.д. :) Я уж молчу что и сама жаба и почти всё что ты перечислил, не говоря про ядро ОС, опять же, написаны внезапно на сишечке.

Уровень высокомерия и невежества доставляет. :)

Stanson ★★★★★
()
Ответ на: комментарий от cumvillain

не могут писать корректный код

Никого не волнует такой параметр как «корректность кода». Всех волнует, например, практическая полезность софта.

Вон сколько на расте понаписали опупенно корректного кода. Весь жидхаб забит. Вот только весь этот код совершенно бесполезен и никому нахрен не нужен. :)

Забавно, хайп пройдёт, про раст забудут, а в арктическом хранилище жидхаба так и будет хранится кладбище всех этих сортировок пузырьком и более лучших версий ls на расте.

Stanson ★★★★★
()