|
![]() |
![]() |
||
Религиозный спор вокруг memcpy и glibc
dl // 31.03.11 14:51
Любопытная и поучительная история разворачивается вокруг одного обновления glibc, добравшись в последние дни и до рунетовских площадок.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2011/03/11.html]
Предыстория восходит к далеким K&R временам, когда в стандартной библиотеке появились функции memcpy и memmove, отличающиеся поведением при обработке перекрывающихся регионов. В зависимости от расположения областей перекрытия можно обеспечить корректную работу, запустив копирование от начала либо от конца. Согласно стандарту, memmove такие проверки делает, memcpy - нет (во имя борьбы за производительность), и ее поведение в таких ситуациях не определено, хотя исторически сложилось так, что все реализации memcpy используют копирование "от начала".
Собственно же история началась в конце прошлого года, когда очередное обновление Fedora сломало 64-битный Adobe Flash. Через некоторое время выяснилось, что причина поломки - выполненная с подачи Intel'овских инженеров оптимизация memcpy в glibc, которая теперь иногда стала выполняться "от конца", обеспечивая на некоторых процессорах выигрыш в скорости в полтора-два раза.
Ну а дальше начался цирк с конями диспут между двумя основными точками зрения на проблему.
Радикальная точка зрения, которой придерживаются авторы glibc, если коротко - "адобы каазлы, а того, кто настолько глуп, что доверился исторически сложившемуся поведению, а не описанному в стандарте, нельзя подпускать к клавиатуре".
Согласно более компромиссной позиции, представленной Линусом Торвальдсом, все-таки нехорошо оставлять крайним пользователя, которому по барабану, что там внутри, но который точно знает, что после обновления системы у него ломается Flash. Хотите бороться за производительность - воткните всю оптимизацию внутрь memmove, а memcpy просто превратите в ее алиас - все равно там теперь полно проверок, которых раньше не было в исходной memcpy, и ради отсутствия которых ее поведение и оказалось неопределенным. Т.е. идея в том, что вполне можно добиться того же роста производительности, не ломая совместимость. Хотя и это не совсем так - за 40 с лишним лет существования С наверняка нашлись программисты, использующие привычное поведение memcpy наизнанку - не для копирования, а для размножения шаблона по буферу. Но их уже совсем не жалко.
Конечно, закладываться на привычное, хоть и формально неопределенное поведение - очень, очень плохо, и в том идеальном мире, в котором, видимо, живут разработчики glibc, такое поведение нужно карать высшей мерой программистско-социальной защиты. Но мы живем в реальном мире, где уже стали хрестоматийными случаи, в которых Microsoft иногда приходится в новых версиях ОС воспроизводить недокументированное поведение и ошибки, используемые в популярном софте.
Просто надо понимать, что ушедшая к пользователям программа/библиотека уже не принадлежит полностью своему автору - мы в ответе за тех, кого приручили, и если у них сложился некий шаблон использования, даже не очень на наш взгляд верный, нужно сжать зубы и найти способ существовать с этим. При этом можно и нужно мягко воздействовать на пользователей, пытаясь склонить их в сторону "здорового образа жизни", но рубить сплеча - будет себе дороже.
P.S. Кстати, есть еще какие-то вопросы по поводу того, почему Линукс никогда не завоюет десктопы?
|
Источник: Red Hat Bugzilla, via avva lj теги: linux | обсудить | все отзывы (6) |
Создатель Java ушел в Google
dl // 28.03.11 22:09
Google продолжил пополнять свою коллекцию авторов ключевых современных языков программирования.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2011/03/10.html]
Создатель Java Джеймс Гослинг (James Gosling) написал в своем блоге о переходе в Google. Забавно, что один из его патентов, связанных с Java, сейчас используется Oracle в их иске против Google.
|
Источник: ITworld теги: java, google | обсудить | все отзывы (1) |
MySQL.com взломали через SQL injection
dl // 28.03.11 16:43
Румынские взломщики взяли на себя ответственность за случившийся в эти выходные взлом mysql.com, который был проделан с помощью простейшего sql injection.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2011/03/09.html]
Утащили имена пользователей и хэши паролей, которые немедленно выложили в открытый доступ (а самые простые сразу подобрали). Кроме того, с января известо еще и про XSS-уязвимость на сайте.
|
Источник: The Register теги: mysql, sql injection | обсудить | все отзывы (4) |
C++0x Final Draft
dl // 27.03.11 01:17
В минувшую пятницу комитет ISO по C++ одобрил финальные технические изменения в стандарте C++0x.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2011/03/08.html]
Примерно через три недели редакторских правок он будет передан в ITTF для финального голосования, которое ожидается этим летом.
|
Источник: Slashdot обсудить | все отзывы (0) |
Visual Studio 2010 SP1
dl // 26.03.11 20:16
Без особого предварительного шума Microsoft выпустила Visual Studio 2010 SP1.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2011/03/07.html]
Из заметного программистам на C++ - в комплект опять вошел отдельный Help Viewer, добавилась поддержка новых процессоров Intel и AMD, в MFC вошли (вот уж удивительно, не прошло и десятка лет) новые классы, поддерживающие Direct2D и анимацию.
|
Источник: Microsoft теги: microsoft | обсудить | все отзывы (0) |
| «« « 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 |
|
|
|