Search
Write a publication
Pull to refresh
-4
@dllmainread⁠-⁠only

User

Send message

царь

В школу слёту.

Ровно все эти вопросы можно было бы задать лет пять назад

Не, отсылки на что-то иное - сразу мимо. Были заданы конкретные вопросы, в том числе главный из них ниже.

Попытки в ответ на это проехаться демагогией про «а насколько далёкое будущее?» — это не более чем демагогия.

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

В целом, спорить с данным персонажем смысла никакого. Его мотивация очевидна - он спутал меня с царём и далее просто побежал мстить и гадить. А так как сам персонаж нигде и никак не состоялся - мы имеем то, что имеем: максимум болтовни и ноль кода. А болтовня меня не интересует.

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

Хочу напомнить

Как там с падением, уже получилось? Нет? Ну идите погуглите. Или уже погуглили?

В общем, похоже это очередной бот.

Что-то эксперт так уверенно рассказывал и так быстро куда-то пропал. Ну это типично.

Просто для протокола:

безопасно кастовать указатели можно только между чемто*, void* и char*

а кастование между чемто* и чемтодругим* (как у вас - long long int* и unsigned char*) - UB

Даже здесь засыпался, даже в области стандарта(который эксерт не читал и знает о нём из историй в интернете). Сообщу новость - signed/unsigned варианты одного и того же базового типа алиастся без ub.

Новые откровения подъехали. А чего проигнорировали всё и свичнулись на новую тему? Рассказывали про падает, а оказалось не падает. Чего так?

Для начала нужно почитать тему, а уже потом бежать срывать покровы. Где if, про который я говорил? К тому же он очевиден, если пытаться читать код, а не просто пустить, получить левое падение, ничего не понять и бежать рассказывать истории.

Да я не ловлюсь, у меня восприятие таких штук эмм феноменологическое.

Я, к счастью, на сях пишу может раз-два в год

к счастью

Ну вот, видите - вас уже убедили в некой сложности C. UB пропаганда - это меинлайн подобной методички.

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

я бы стал делать как вы – но не 128, конечно, а 8 – потому что мне это сразу без объяснений понятно.

Ну 8 там мало будет. 32/64 - это уже нормально. На 16 авось оно что-то сможет.

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

Опять же, нет. Оно не абузит ub, оно абузит матчасть, с которой у многих дела обстоят неважно. UB - понятие стандарта и появилось оно там из-за того, что:

  1. стандарт не может оперировать конкретными условиями - это абстрактное описание

  2. всегда легче написать "вот за это мы никак не отвечаем" чем пытаться как-либо описывать реальность

А в реальности конкретно здесь есть только железо/память, котороя работает так, как работает. Никакие стандарты и прочее железо не волнуют.

Не, это ни на что не повлияет. Там нет какого-то непонимания, что такое ub, и прочего. Т. е. это не ошибочное мнение, а просто попытки как-то оправдать свой положение. Эксперты сидят с 4-5 Gib/s, да и даже это они также спастили, а не написали сами. И тут вдруг кто-то показывает нормальный перф - далее всё просто: либо все понимают, что за гуру оптимизации здесь обитают, либо эксперты придумывают тысячи оправданий своей некомпетентности.

А поскольку стандарт - максимально абстрактная байда, легче всего рулить именно туда, ведь никак это проверить нельзя. Там вон выше(или ниже) дошли до размера страницы памяти < 128 байт, а вот где-то там(квак) что-то поломалось спустя долгое время, ну и конечно же, агитка про "отформатировать диск"(это совсем позор, ведь никакого форматирования не было зафиксировано ни разу).

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

Далее у эксперта два пути: либо признать своё непонимание(и похоронить себя как эксперта), либо начинать придумывать разные отмазки.

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

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

Однако же просьба была вызвать падение в коде, вызванное UB от обращения позади нуля.

Неверно. Задача была вызвать падение из-за широкого чтения позади нуля. Вы показали пропущенный return, который не имеет отношения к делу. Вам следует изучить тему для начала, а далее уже отвечать. Какие-то ассоциации из подкорки вроде "и там после 0, и там после 0 - значит это одно и то же" - сразу мимо.

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

Ну фантазии меня мало интересуют. Это нужно показать.

Еще можно получить шар с волосами на архитектурах где размер страницы меньше 128 байт.

Куллстори. Архитектуру в студию. Ну кстати, я верно задетектил абсолютное непонимание, ведь это 128 - от него ничего не зависит и это можно менять.

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

Ога.

Исправленный код допустим даже в продакшен

Боже, эти откровения. Рассказывали про кучу проблем, а теперь бам - оказывается можно тест бахнуть и всё сразу же становиться нормально.

А в целом да - код работает, а все перечисленные "проблемы" - просто фантазии, даже тест не нужен.

Похоже вы решили со мной поиграть в эксперта. Хорошо. Падение из-за того UB, о котором говорили из твиттера и здесь - в студию. Обоснование за попытки манипулировать, предоставив падение, которое к делу не относится - так же в студию.

Как уже отписался - это мимо. Не то падение. Я там отписал, как это правится.

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

Я там после for head_end забыл вписать if (!*i) return r; - это не то, о чём говорили ub-персонажи.

Смотрю минуса уже начинают подъезжать. Видимо группа поддержки набигает. Поэтому отмечу ещё один момент и пойду. В чём суть "аргументации" твиттер- и прочих экспертов, - UB. Но что характерно, именно то ub, которое имеет последствия и искажает результат работы функции эксперты не нашли. Это переполнение при step_size = 128, которое я не убрал. Я сообщал здесь об этом ранее.

А вот "false-positive UB" они нашли. Ну как нашли - путили санитайзер и оно им нашло. Сами они не нашли бы даже этого. Я ожидал подобных заходов почти мгновенно, но почему-то их не последовало, я даже удивился немного. Только спустя полдня адепт известно какого ЯП что-то там нагуглил. Удивительные эксперты.

Ладно, резюмируя(для неофитов в первую очередь, но не только для них) - код дан, любой может взять и проверить - это одна из фишек программирования по сравнению с большинством остального - всё довольно просто проверяется. Берём мой код - перф на уровне, берём код из glibc - перф на уровне, берём код экспертных экспертов - ой, сливает раз в несколько раз. Рассказывали про падения - не нашли, начали рассказывать про ub - оказалось это "ложное" ub и ни на что оно не влияет. Далее совсем поломались и начали просто заспамливать меня как боты "это ub", "это ub", "это ub" - надо же как-то оправдаться в глазах общественности. Ну так бывает, когда ты эксперт из твиттера/адепт некого ЯП/ещё какой-то 25 эшелон.

Сам даже забыл уже - где корка от падения? Снова не смоглось?

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

Неверно. Вы говорите есть ub - показываете его и последствия этого ub. Нет последствий ub - нет и самого ub. Всё просто.

Код не падает

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

на некотором распространенном конечном наборе платформ и компиляторов.

В студию набор на котором падает.

Так что да: ваш код не падает, но является явным UB.

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

Таких обнаглевших спамеров нечасто встретишь. Опять же, радостные вести для подобных персонажей - любой "перегиб" с моей стороны - и я теряю возможность отвечать(бан/минуса). Удобно.

Давайте по простому. Мой код падает, Да или Нет?

А то эти детские наезды, уже немного поднадоели.

Так, заспам про "ub" будет продолжаться до последнего. Но тут интересно другое:

Вы вообще в курсе, что отсутствие UB, в общем случаи невозможно доказать, конечным количеством тестов, на конечном наборе конфигураций?

И вот данный персонаж(а также твиттер-эксперт) пытаются требовать с меня именно эти доказательства. Это совсем нелепое позорище. Т. е. именно они должны доказывать наличие этого ub/падает/прочее. Но пока не получилось(и далее также не получится).

Но в данном случаи вы даже не отрицаете, что происходит выход за пределы массива, это очевидно

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

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

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

Information

Rating
Does not participate
Registered
Activity