Re[3]: Ломать ли совместимость в недокументированной области
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 12.11.10 07:44
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Просто memcpy() современные компиляторы инлайнят в пару инструкций процессора, в отличие от memmove(). Так что первая гораздо предпочтительнее в нагрузочных сценариях.


В теории это, безусловно, так, но на практике я проблем с производительностью memmove() не наблюдал даже на девайсах под управлением Windows Mobile 2002. Хотя, безусловно, в каждом конкретном случае нужно делать соответствующие "замеры".
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[3]: Ломать ли совместимость в недокументированной области
От: Jack128  
Дата: 12.11.10 07:45
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>>С самых первых дней программирования на C/C++, прочитав в чем разница между memcpy() и memmove(), всегда использовал последнюю — ведь "если вы параноик, то это не значит, что ОНИ за вами не гонятся..."


V>Просто memcpy() современные компиляторы инлайнят в пару инструкций процессора, в отличие от memmove(). Так что первая гораздо предпочтительнее в нагрузочных сценариях.


а что мешает memmove инлайнить?
Re[4]: Ломать ли совместимость в недокументированной области
От: mrTwister Россия  
Дата: 12.11.10 09:50
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Не зная причин, обсуждать принятое решение бессмысленно, но идеологически правильным вариантом мог быть выпуск патча для SimCity и включение его в дистрибутив ОСи.


Создание такого патча как минимум противоречит (99%) лицензионному соглашению SimCity, в котором скорее всего оговорен запрет модификации кода.
лэт ми спик фром май харт
Re[5]: Ломать ли совместимость в недокументированной области
От: _ABC_  
Дата: 12.11.10 10:48
Оценка: +3
Здравствуйте, mrTwister, Вы писали:

T>Создание такого патча как минимум противоречит (99%) лицензионному соглашению SimCity, в котором скорее всего оговорен запрет модификации кода.


Не грузи их мелочами, они стратегию продумывают. (с)
Re: Ломать ли совместимость в недокументированной области?
От: vsb Казахстан  
Дата: 12.11.10 11:02
Оценка:
Правильным было бы по умолчанию использовать быструю версию, но так же включить возможность задания, например, переменной окружения GLIBC_USE_SLOW_MEMCPY, который включает поведение предыдущей версии. Пока есть популярный непропатченный софт, запускать его через врапперы. Через пару лет, когда все пофиксят баги, выбросить эту возможность.

Ну и каким-то образом при компиляции программы без NDEBUG ставить в каждом вызове memcpy assert-ы на проверку перекрытия областей памяти, чтобы помочь новичкам.
Re[5]: Ломать ли совместимость в недокументированной области
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.11.10 11:17
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>А представляете, сколько есть недокументированных полезных свойств у разных функций, про которые авторы glibc даже не знают, но которыми кто-нибудь пользуется? Как вы предлагаете девелопить glibc, поддерживая полную совместимость со всеми этими полезными функциями?


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

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


Такая ситуация как с memcpy приведет к отказу чуть не всех приложений на Виндовсе.

Pzz>Только не очень понятно, кто в этом старом рантайме фиксит критические уязвимости. Я подозреваю, что никто.


Не правильно понимаешь.

Pzz>Вы предлагаете сделать из Си язык для дебилов, неспособных прочитать документацию. Это чудесно, но на чём тогда программировать недебилам, которые знают разницу между этими 2-мя функциями и для которых эта небольшая экономия может быть существенна?


На C#. На крайняк — на Java.
Re[6]: Ломать ли совместимость в недокументированной области
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.11.10 12:37
Оценка:
Здравствуйте, Ikemefula, Вы писали:

Pzz>>А представляете, сколько есть недокументированных полезных свойств у разных функций, про которые авторы glibc даже не знают, но которыми кто-нибудь пользуется? Как вы предлагаете девелопить glibc, поддерживая полную совместимость со всеми этими полезными функциями?


I>А не надоо ничего представлять. Девелопить, как девелопили, только проверять свой девелопмент в реальном окружении, как это принято в бизнесе.


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

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


I>Такая ситуация как с memcpy приведет к отказу чуть не всех приложений на Виндовсе.


Что, виндовсные программисты поголовно не слышали о memmove?

Pzz>>Вы предлагаете сделать из Си язык для дебилов, неспособных прочитать документацию. Это чудесно, но на чём тогда программировать недебилам, которые знают разницу между этими 2-мя функциями и для которых эта небольшая экономия может быть существенна?


I>На C#. На крайняк — на Java.


Дык C# вот и создали для дебилов. Непонятно, что им по прежнему надо от Си
Re[7]: Ломать ли совместимость в недокументированной области
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.11.10 13:16
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я думаю, что проверяют. Но ошибки случаются. В "реальном окружении" слишком много программ, да и ошибки такие вылазят при достаточно редких обстоятельствах.


Ошибки вроде этой — вылазят всегда при любых обстоятельствах.

I>>Такая ситуация как с memcpy приведет к отказу чуть не всех приложений на Виндовсе.


Pzz>Что, виндовсные программисты поголовно не слышали о memmove?


Микрософт поддерживает совместимость вплоть до багов если либа общего назначения.
Re[8]: Ломать ли совместимость в недокументированной области
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.11.10 13:28
Оценка:
Здравствуйте, Ikemefula, Вы писали:

Pzz>>Я думаю, что проверяют. Но ошибки случаются. В "реальном окружении" слишком много программ, да и ошибки такие вылазят при достаточно редких обстоятельствах.


I>Ошибки вроде этой — вылазят всегда при любых обстоятельствах.


Почитайте ветку в багрепорте — она (эта ошибка) отнюдь не всегда вылазит.

I>>>Такая ситуация как с memcpy приведет к отказу чуть не всех приложений на Виндовсе.


Pzz>>Что, виндовсные программисты поголовно не слышали о memmove?


I>Микрософт поддерживает совместимость вплоть до багов если либа общего назначения.


Блажен кто верует
Re[9]: Ломать ли совместимость в недокументированной области
От: Aen Sidhe Россия Просто блог
Дата: 12.11.10 13:29
Оценка: +2
Здравствуйте, Pzz, Вы писали:

I>>Микрософт поддерживает совместимость вплоть до багов если либа общего назначения.


Pzz>Блажен кто верует


Вы не правы.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[4]: Ломать ли совместимость в недокументированной области
От: vdimas Россия  
Дата: 12.11.10 13:32
Оценка:
Здравствуйте, Jack128, Вы писали:

J>а что мешает memmove инлайнить?


Ничего, но там уже не пара инструкций.
Re[9]: Ломать ли совместимость в недокументированной области
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.11.10 14:02
Оценка:
Здравствуйте, Pzz, Вы писали:

I>>Ошибки вроде этой — вылазят всегда при любых обстоятельствах.


Pzz>Почитайте ветку в багрепорте — она (эта ошибка) отнюдь не всегда вылазит.


Ты сам её прочти.

I>>Микрософт поддерживает совместимость вплоть до багов если либа общего назначения.


Pzz>Блажен кто верует


Тут не надо верить, заглядывай иногда в KB.
Re[2]: Ломать ли совместимость в недокументированной области
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.11.10 14:04
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Правильным было бы по умолчанию использовать быструю версию, но так же включить возможность задания, например, переменной окружения GLIBC_USE_SLOW_MEMCPY, который включает поведение предыдущей версии. Пока есть популярный непропатченный софт, запускать его через врапперы. Через пару лет, когда все пофиксят баги, выбросить эту возможность.


vsb>Ну и каким-то образом при компиляции программы без NDEBUG ставить в каждом вызове memcpy assert-ы на проверку перекрытия областей памяти, чтобы помочь новичкам.


Это ж головой надо думать. Куда проще забить на реальное окружение под различными предлогами и пофиксить как взбрело в голову.
Re[5]: Ломать ли совместимость в недокументированной области
От: IT Россия linq2db.com
Дата: 12.11.10 14:04
Оценка:
Здравствуйте, vdimas, Вы писали:

IT>>Это порча памяти! Последствия будут аукаться ещё 200 лет в самые неожиданные моменты.

V>В виндах отродясь эта ф-ия была с порчей памяти в случае перекрытия, никто не жалуется.

Потому её никто и не использует для перекрывающихся областей.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Ломать ли совместимость в недокументированной области?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.11.10 14:06
Оценка:
Здравствуйте, Michael7, Вы писали:

M>В принципе, ошибка не в glibc, а в прикладных программах и для исправления достаточно банально заменить memcpy(...) на memmove(...) и заново откомпилировать программу.


Это вобщем то классический расклад по линуксу и опенсорсу — один д'Артаньян и все канальи вокруг.

Эдак и про Виндовс можно сказать — ошибки не в Виндовсе а в прикладных программах. Каково ?
Re[5]: Ломать ли совместимость в недокументированной области
От: Jack128  
Дата: 12.11.10 14:10
Оценка: -1
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, Jack128, Вы писали:


J>>а что мешает memmove инлайнить?


V>Ничего, но там уже не пара инструкций.


а почему не пара то?? если раньше memcpy и memmove делали одно и тоже, то и по идее и инлайнинг работать должен был для них одинаковый результат давать?
Re[2]: Ломать ли совместимость в недокументированной области
От: IT Россия linq2db.com
Дата: 12.11.10 14:42
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>Если мне не изменяет память, то аналогичные ситуации возникали и с MFC


Изменяет. Код, использующий недокументированные возможности MFC просто не компилировался.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Ломать ли совместимость в недокументированной области
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 12.11.10 14:45
Оценка:
Здравствуйте, IT, Вы писали:

IT>Изменяет. Код, использующий недокументированные возможности MFC просто не компилировался.


А, ну да, верно.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[10]: Ломать ли совместимость в недокументированной област
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.11.10 15:57
Оценка:
Здравствуйте, Ikemefula, Вы писали:

Pzz>>Почитайте ветку в багрепорте — она (эта ошибка) отнюдь не всегда вылазит.


I>Ты сам её прочти.


Я прочёл и получил массу удовольствия
Re[9]: Ломать ли совместимость в недокументированной области
От: March_rabbit  
Дата: 12.11.10 16:14
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>>>>>А вот разработчики glibc положили йух на такую совместимость.

MC>>>>Если у них есть такая возможность — за них можно только порадоваться.
G>>>Да в том то и дело что у них нет, а они думают что есть.
MC>>Она у них есть. Из всех программ сломался только флеш плеер. Ну и хуавей с ним.
G>А ниче что это почти 100% пользователей?
гм. а вот почему авторов самого говноплаера это не чешет? типа выложили свой говнокод и все, отстрелялись?

G>Если бы линукс был более массовым для конечных пользователей, то ему бы не простили такие поломки.

не в этом тут дело.

В данном вопросе я всеми руками за разработчиков либы.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.