LINUX.ORG.RU

Изменение поведения memcpy в glibc привело к странным ошибкам

 ,


0

2

Изменение поведения функции memcpy() в реализации glibc для x86_64 (для ia-32 ничего не изменилось) привело к странным ошибкам во многих программах. Например, искажению звука при проигрывании.

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

Несмотря на появление в обсуждении Линуса Торвальдса, у которого также появились проблемы со звуком в некоторых программах на его компьютере, ошибка была закрыта по причине «not a bug». В сообщении #38 Линус предлагает способ обхода этой проблемы.

>>> Подробности

★★★★★

Проверено: anonymous_incognito ()
Последнее исправление: Dendy (всего исправлений: 5)

А как с этим в других реализациях?

Yareg ★★★
()

И правильно закрыли, а проекты с глюками могут тупо сделать sed -i 's/memcpy/memmove/g' *.c

Маны читать надо!

rymis ★★
()

Ща заценим.

Например, искажению звука при проигрывании.

Немного искажений разнообразят приевшиеся мелодии.

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

> только на тех, на которых есть SSSE3 , это только Интел, AMD отдыхают )

Я что-то пропустил? Вроде SSE3 уже давным-давным поддерживается AMD. ЕМНИП начиная с Athlon64 X2/Opteron http://ru.wikipedia.org/wiki/SSE3

Правда у моего Atlhon 64 X2 как раз почему-то cpuinfo и не показывает флага sse3.

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

> Там довольно интересное обсуждение

Добавил, только я вот чего не понял. Линус Торвальдс и в glibc что-то пишет или только принял участие в обсуждении бага?

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

>Линус Торвальдс и в glibc что-то пишет или только принял участие в обсуждении бага?

Просто зашел потроллить:)

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

В ссылке на багзиллу выше, Линус приводит быстрый хак, после которого все должно работать. Листинг в комменте №38 нужно скомпилировать, линкануть как .so и скормить вместе с LD_PRELOAD браузеру

TechManiac
()

memcpy для перекрывающихся участков памяти теперь работает некорректно

А почему она не выдает segfault?

Мне кажется, в данном случае фатальная ошибка была бы более уместна, чем некорректная работа.

Я надеюсь? все помнят, как Windows XP SP3 молча добавили синий экран смерти на повторное освобождение памяти в ядре, и ничего - кому было нужно свои драйверы починили. Почему Linux не может идти по пути ужесточения ядра и основных библиотек - большинство исходников открыто - исправить легко. Бинарные блобы тоже со временем подтянутся.

sign
()

Этой осенью, на всех крупных Linux-порталах!

>Несмотря на появление Торвальдса в обсуждении у которого тоже появились проблемы со звуком в некоторых программах на его компьютере, bug закрыт по причине «not a bug».

Смотрите зрелищный блокбастер: «Торвальдс прогибает Дреппера». Широко известный разработчик ядра Linux с открытым кодом после очередного апдейта федоры ВНЕЗАПНО обнаруживает хрип и бульканье в колонках. В поисках истины он объединяется со своими фанатами и они вместе идут к замку злобного Ульриха, размахивая транспарантами: «Я променял Кокса на kdesu и emacs!».

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

Смотрите и не пропустите!!!

P. S. в 3D могут посмотреть только владельцы видеокарт Nvidia с установленными проприетарными драйверами.

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

>> А почему она не выдает segfault?

а почему она должна его выдавать? Просто портит данные при копировании.

sergej ★★★★★
() автор топика

Изменение поведения memcpy в glibc привело к странным ошибкам


с просонья показалось что-то более жуткое, типа внесение помех в работу Большого Адронного Коллайдера и возникновение ч00рной дыры в районе процессора на котором исполняется новый glibc с memcpy с засасыванием туда людей и техники.

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

это все интел пытается малину AMD портить,
а АМД пытаются сочинить новых SSE быстрее интела,
вот и получается цирк с названиями и что хуже с соответствием названий набору инструкций, SSE4a и SSE4 (4.1 , 4.2) в реализации Интел - фактически разные наборы инструкций, также существует и SSE5 , в разработке AMD, в то время как Intel решили в эту игру больше не играть и следующее поколение расширений просто обозвали AVX,
с FMA тоже безобразничают (Fused Multiply) есть FMA3 (Intel) , которая несовместима с FMA4 (AMD)

glibc в принципе всегда отличались тем, что пытаются переписывать на ассемблер то, что можно переписать, и активно используют новые расширения, 32 бита _пока_ не тронули, но принципиально могут, SSE 4.2 (Intel Nehalem) же задействовали для сравнения строк

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

> Мне кажется, в данном случае фатальная ошибка была бы более уместна, чем некорректная работа.

Видимо это порушило бы оптимизацию добавлением проверки на перекрытие и генерацией сегфолта или еще чего. И вообще, зачем, если всё работает согласно man memcpy ?

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

>> Линус тоже федору юзает?

никто не знает что у него в качестве DE?

После выхода KDE4 перешел на гном

sergej ★★★★★
() автор топика

bug закрыт по причине «not a bug».

Это не баг, это фича.

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

каждый день что нибудь да сломаеться


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

А кому нужен спокойный ынтырпрайз - сидят на 2.4 или древних 2.6 и не рыпаюцо.

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

А при чём тут «щепки летят», если выясняется, что некоторые кодеры прикладного софта манов не читают и лепят бажный код. То что их баг раньше не вылез вовсе не их заслуга. И какого из-за багоделов нужно отказаться от ускорения работы нормально написанных программ?

anonymous_incognito ★★★★★
()

в очередной раз закрытые приложения показали себя с худшей стороны.

aim1159 ★★★★★
()

>bug закрыт по причине «not a bug»

«Гранаты у него не той системы...» :)

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

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

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

> некоторые кодеры прикладного софта манов не читают и лепят бажный код.

он был, если я правильно понимаю, не бажным до glibc 2.12

в ubuntu 2.11 и там всё нормально. а учитывая что большинство разработчиков не смотрят «что там новенького» - то очевидно что на свежем glibc нихрена нормально не будет работать ещё N месяцев (тем более учитывая скорость обновления ПО от adobe...)

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

> А почему она не выдает segfault?

Мне кажется, в данном случае фатальная ошибка была бы более уместна

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

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

Это точно. Даже в старых манах белым по черному пишется

The memcpy() function copies n bytes from memory area src to memory area dest. The memory areas should not overlap. Use memmove(3) if the memory areas do overlap.

Eddy_Em ☆☆☆☆☆
()

>memcpy теперь работает некорректно (как в общем то и должно быть).
все таки корректно или некорректно, вы уж определитесь.

если согласно документации и логике - корректно.

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

Эта новость вас как бы послностью опровергает


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

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

> В ссылке на багзиллу выше, Линус приводит быстрый хак, после которого все должно работать. Листинг в комменте №38 нужно скомпилировать, линкануть как .so и скормить вместе с LD_PRELOAD браузеру

Спасибо! Я то я очень бегло проглядел репорт и не заметил, некогда вчитываться. Надо попробовать этот workaround.

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

Интересно, у него тормозят ролики в фул скрине? :)


Слушай, а что надо сделать что бы начали тормозить ?

/me счастливый пользователь убунты и нвидии и амд64

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

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

Это точно. У нас на некоторых серверах внутреннего пользования еще четвертая шапка стоит...

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.