Свежие комментарии
Title | Comment |
---|---|
Ещё уточню: рассчитывать на негарантированный стандартом, но |
Ещё уточню: рассчитывать на негарантированный стандартом, но "правильный" результат ещё простительно (хотя я так не считаю, но речь не о том), но рассчитывать на то, что явно неопределённое "неправильное" поведение будет всегда и везде таким же, какое оно на машине разработчика в момент написания — уже нет. |
Нет. Поведение memcpy в случае пересекающихся регионов неоп |
Нет. Поведение memcpy в случае пересекающихся регионов неопределено. "Старый" memcpy(char *dst, const char *src, size_t len) работал правильно* в случае dst = src - N (где N < len), новый выдаёт условно непредсказуемый результат, а в случае dst = src + N они оба делают непредсказуемые вещи. memmove всегда работает правильно*. Таким образом, заменой memcpy на memmove мы добиваемся всегда правильной* работы. Если кто-то закладывался на гарантированно непредсказуемый результат memcpy при dst = src + N, то это гарантированно неправильная программа. И была, и есть. Хотя бы просто потому, что результат зависит от ОС и даже от архитектуры. То есть хак грязный, но правильный. ---- |
А зачем сквид со спамассасином скрещивать? |
А зачем сквид со спамассасином скрещивать? |
Так в том-то и дело, что программы сломались именно оттого, |
Так в том-то и дело, что программы сломались именно оттого, что закладывались на поведение старого memcpy. |
Присоединяюсь к хору голосов |
Присоединяюсь к хору голосов о том, что API должно быть задумано изначально так, чтобы его было трудно использовать неправильно. memmove -- вариант правильного API, memcpy надо было назвать memory_unsafe_copy. Пропатчил свою libflashplayer.so, заработали игрушки вконтакта ;) |
Это нормальный хак. Да, memmove всегда работает "правильно" |
Это нормальный хак. Да, memmove всегда работает "правильно" (memcpy и старый непредсказуемое что-то выдавал в случае dst = src + 1), но если кто-то закладывался на поведение старого memcpy — то это такой ССЗБ, что я в такое не верю. Во всех остальных случаях они работают одинаково (ну, кроме скорости, очевидно). PS: что не отменяет того факта, что это всё-таки грязный хак, как не крути. |
Это очень плохой хак, потому что memmove работает хоть и иде |
Это очень плохой хак, потому что memmove работает хоть и идеологически правильно, но скорее всего, не так, как прежний memcpy. |
это такая штука, которую надо всё время патчить. и непременн |
это такая штука, которую надо всё время патчить. и непременно под FreeBSD! |
А я может чего-то не знаю? |
А я может чего-то не знаю? Это "фактическое" поведение memcpy() - оно действительно насколько строго выполнялось всегда и везде? И до этого бага существовали люди которые достоверно знали что в мане-то написано, но memcpy() работает вот так. |
<q><i>> Новая реализация стала недетерминированной, отчег |
> Новая реализация стала недетерминированной, отчего сломалось некоторое количество программ. В число сломанных программ попал Adobe Flash Player, который очень распространенный и при этом распространяется в бинарях т.е. быстро починить нельзя. Более того, сломалась неподдерживаемая (но более хорошая) 64-битная версия, которую чинить и не будут скорее всего. Гентушники с помощью ломика, objdump, dd и какой-то там матери это при установке чинят подменой вызовов memcpy(2) на memmove(2). Хотя это тот ещё хак, конечно... |
"В OSS человек - это только разработчик, ну или" вот и было |
"В OSS человек - это только разработчик, ну или" вот и было выше мудро сказано - фида, такая фида из-за чего и получаются именно что объедки достойные помойки и пригодные лишь для специально тренированной кошки |
Аналогичный случай имел место <s>в городе Тбилиси</s> в Wind |
Аналогичный случай имел место А на твой вопрос "что должен делать разработчик библиотеки" там ответ однозначный: делать так, чтоб у пользователя всё работало. p.s. быстро починить можно, принудительно подсовывая библиотеку посредством LD_PRELOAD со старым вариантом memcpy. Что не отменяет всего остального. |
Реальная проблема -- FF 3.6 перестал открывать плагин консол |
Реальная проблема -- FF 3.6 перестал открывать плагин консоли VMWare. Это не заинтересовало ни FF ни VmWare. И что? Не очень большой масштаб? Хорошо. Сколько лет интеграция сквида и спамасасина делалась какими-то студенческими соплями на пхп? А про всякие выверты в html и его обработке -- это да. Возможно что скорее всего поправят стандарт, а не сайт. Но такая практика не пошла на пользу ни разработчикам браузеров ни разработчикам сайтов. :) |
Ну это маятник. На транспорте вдруг вырастает ЖЖ, гейтование |
Ну это маятник. На транспорте вдруг вырастает ЖЖ, гейтование в ЖЖ и всё такое прочее :) |
Ну как, моральное удовлетворение от правильности, и даже нав |
Ну как, моральное удовлетворение от правильности, и даже наверное какая-то экономия если строгий человек заставляет всех пользующихся продуктом людей следовать идеологии :) Теоретически это "правильный путь", но практически -- конь в нечистом вакууме :( Мне лично симпатичнее "чтобы работало" -- у нас контора с клиентами напрямую общается, и главный приоритет -- счастливый клиент :) |
Наверно кривая, я её переупростил. :) Меня в ней интересовал |
Наверно кривая, я её переупростил. :) Меня в ней интересовала иллюстративность того, что люди и сообщества могут свободно пересекаться оставаясь собой. То есть и люди и стулья, конечно. И о мотивациях. Конечно своя, но совпадение фрагментов мотивация и усилий и используются в сообществе. Я всё сделал хорошо и даже лучше, из-за чьей-то криворукости где-то что-то отвалилось и теперь от меня требуют, чтобы я обратно сделал плохо. Зачем это мне? Кому я тут должен? И для коммерса масштаб проблемы измеряется не количеством абстрактных людей. Если у миллионов пользователей OpenOffice перестанут открываться документы их собственных пользователей, разве это остановит коммерческих разработчиков? :) |
А смысл? Может лучше всё равно исправить, а лишнего этого че |
А смысл? Может лучше всё равно исправить, а лишнего этого человека отправить искать новых клиентов? :) |
Ну если не монополист в своей области и продаётся продукт юз |
Ну если не монополист в своей области и продаётся продукт юзерам, то, конечно надо к ним лицом "чтобы работало" а не попой "вас много а я одна/насовали тут а мне разбирайся/конец квартала, напильником сами доработаете". Если, скажем, продукт для контор, и есть возможность поставить человека с плёткой "чтобы муштровал" и всё было идеологически правильно, то битте шон, конечно :) |
Чуваки ж тычут в спеку где |
Чуваки ж тычут в спеку где написано, что behavior undefined. Если оно undefined, то оно может быть и таким, когда все работает, ан нет, они придумали себе, что нужно именно undefined и типо где то там быстрее. Заметь, про бенефиты никто и не говорил. > Проблема в том, что при возникновении конфликтов между правилами и реальной жизнью - должен быть какой-то внятный механизм я ж вроде зареганый, а капчу спрашивает. |
Firefox - несколько особый случай. Его присутствие можно хот |
Firefox - несколько особый случай. Его присутствие можно хотя бы по строчке user-agent в логах web-серверов вычислить. |
+1, согласен про найм. Не нужно пытаться объять необъятное и |
+1, согласен про найм. Не нужно пытаться объять необъятное и впихнуть невпихуемое (с). Важно достижение результата, а оно будет получено быстрее, когда команда работает как единый организм (а значит - одинаково мыслит), чем когда вместе трудятся лебедь, рак и щука. |
Не рублем единым. Точнее, бесплатная userbase тоже прекрасно |
Не рублем единым. Точнее, бесплатная userbase тоже прекрасно конвертируется в рубли, просто курс ниже. Поэтому пользователь, который голосует просто установкой (и использованием) firefox или chrome или линукса - он тоже проголосовал. Вниманием. Экономика внимания, туды ее растуды. Но, конечно, разработчики библиотек эту экономику внимания чувствуют меньше |
Проблема не в следовании |
Проблема не в следовании (выдуманным) правилам, при отсутствии дополнительных обстоятельств следовать им надо, ибо вовсе без правил сильно хуже. Проблема в том, что при возникновении конфликтов между правилами и реальной жизнью - должен быть какой-то внятный механизм разрешения этих конфликтов. А не "у меня есть правила, а пользователи не парят". |
Ну тут я немножко не согласен .Людьми можно и нужно считать |
Ну тут я немножко не согласен .Людьми можно и нужно считать тех, кто способен высказать свое мнение. В коммерческом софте пользователь - человек, потому что он может ХОТЯ БЫ проголосовать рублем. Другое дело что для интерпретации действий таких людей нужне авгур-маркетолог, который позволит перевести "знамения" на понятный разработчикам язык. В OSS community пользователь, который ничего не контрибьютит - вообще "темная материя", Даже по количеству скачиваний ничего нельзя опрелделить. Человека, на мой взгляд, следует определять как существо, способное к социальному взаимодействию. |
ох да. свиньи не кормлены, поля не паханы, а они... а что т |
ох да. свиньи не кормлены, поля не паханы, а они... а что такое KDE? (навно хлопая глазками) |
По счастью, есть и нормальные люди. В смысле, разработчики, |
По счастью, есть и нормальные люди. В смысле, разработчики, которые считают людей - людьми. Без этого тот же Firefox не взлетел бы. |
Она (glibc) им скорее всего не нужна, но приехала к ним в ап |
Она (glibc) им скорее всего не нужна, но приехала к ним в апдейте. А flash им нужен т.к. они хотят страшные ролики про Фукусиму смотреть. |
Тут проблема интереснее. Вот представь Firefox и его пользо |
Тут проблема интереснее. Вот представь Firefox и его пользователей. Допустим, версия 7.18.42 перестала отображать какой-то достаточно популярный сайт, вроде cnn.com (не гугл, но тоже много). Допустим, даже, на cnn кривая верстка, но IE и прочие Operы его отображают. Разработчики FF не будут кричать "пусть эти уроды переделают сайт", а постараются вернуть совместимость с версией 7.18.41. А вот в случае *библиотек* пользователями являются вовсе не настоящие конечные пользователи, а другие разработчики. А пользователей авторы libc обычно вовсе не видят. А вот когда внезапно увидели, да и то, не пользователей а Линуса, тут и случилась веселуха. |
Конечно, не человек. В OSS человек - это только разработчик, |
Конечно, не человек. В OSS человек - это только разработчик, ну или хотя бы человек, который грамотные багрепорты контрибьютит. Чистый пользователь, который ничего не контрибьютит, это даже не вроде пойнта в фидо. Это кошка, которая питается выброшенными на помойку объедками. Ну да, бывает еще домашняя кошка, которую какой-нибудь челвоека специально кормит. Но надо учитывать, что любой разработчик ОДНОВРЕМЕННО является пользователем. |
ИМХО пользователей, которым НУЖНА свежая glibc и flashplayer |
ИМХО пользователей, которым НУЖНА свежая glibc и flashplayer одновременно - единицы. PS: а вообще flashplayer пожалуй самая глючная штука у меня на десктопе. |
Pages
