Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Как такое возможно физически? https://github.com/Vitallium/qt5/blob/master/qtbase/src/tools/uic/uic.pro *-maemo* { # UIC will crash when running inside QEMU if built with -O2 QMAKE_CFLAGS_RELEASE -= -O2 QMAKE_CXXFLAGS_RELEASE -= -O2 } (кстати, что значит *-maemo*?) Почему что-то в принципе может работать по-разному на виртуалке и на реальной железке? Не, вопрос не в том "НЕУЖЕЛИ ЭТО РЕАЛЬНО" (да, реально), хочется понять технические причины этого (для общего развития). Что изнутри виртуалки выглядит иначе, чем изнутри реальной железки так, что это может касаться юзерспейс-кода? Понятно, что виртуалки бывают разные, но интересны разные истории "из жизни" - что разработчикам виртуалок не удаётся сделать похожим на реальное железо так, что это видно выполняющемуся в виртуалке коду? Я понимаю, что повторить поведение ЦП (сэмулировать) наверное очень тяжело. Что компилятор может рассчитывать на какую-то тонкость в поведении и как-то хитро оптимизировать код, так, что в виртуалке это выходит боком. Но что именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 13:27 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Какую виртуалку можете посоветовать для компиления C++ проектов? Или без компиления и тестов на реальном железе в любом случае это будет рисковано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 13:35 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenko, Я сам лично никогда ничего не тестирую на VM (на тестовом компе использую "много дисков" и много OS -поверх железа). Более того никогда их не устанавливал и в глаза не видел. Чего нельзя сказать про клиентов - повальная болезнь к виртуалкам. Дык вот. Если у клиента возникает неопознанная проблема (типа crash и т.п.) и выясняется что клиент юзает VM то, согласно выработанному годами подходу, клиент идет в баню (т.е. ему предписывается установить софт на нормальное железо). В лучшем случае, ему рекомендуется обратиться к девелоперу своей чудо(VM)-машины, что конечно вряд ли поможет, но по сути проблемы VM -это проблемы разработчиков этих VM а не твои, как разработчика программ для виндов, или чего у тебя там. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 14:26 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Дмитрий77vilerenko, Я сам лично никогда ничего не тестирую на VM (на тестовом компе использую "много дисков" и много OS -поверх железа). Более того никогда их не устанавливал и в глаза не видел. Чего нельзя сказать про клиентов - повальная болезнь к виртуалкам. Дык вот. Если у клиента возникает неопознанная проблема (типа crash и т.п.) и выясняется что клиент юзает VM то, согласно выработанному годами подходу, клиент идет в баню (т.е. ему предписывается установить софт на нормальное железо). В лучшем случае, ему рекомендуется обратиться к девелоперу своей чудо(VM)-машины, что конечно вряд ли поможет, но по сути проблемы VM -это проблемы разработчиков этих VM а не твои, как разработчика программ для виндов, или чего у тебя там. Ну в принципе логично. Просто сейчас индустрия виртуализации так развита, что виртуалки уже воспринимаются как 100% эквивалент железке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 14:48 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenko , что именно падает и какую ошибку выдает? Сейчас на большинстве CPU есть VT технологии, так что CPU работает прозрачно и идентично. А вот переферийные устройства: сети, диски, видеокарты, мониторы и т.д. - свои виртуальные. С одной стороны PCIe устройства можно прокинуть напрямую в виртуалку при включенной на проце VT-d технологии, но с другой там тоже возникают тонкости при обмене напрямую между разными PCIe устройствами. У меня наоборот проблема, на одном и том же образе VMWare у всех работает, какое бы железо под ней не было, а вот на голом железе - не всегда, тупо не каждый Linux запуститься, не каждый сетевуху найдет и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 14:51 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenkoПочему что-то в принципе может работать по-разному на виртуалке и на реальной железке? Потому же почему оно может работать по-разному на разном железе. Например, гонки потоков именно так себя и проявляют: где-то работает, а где-то всё падает. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 15:04 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Вася Уткин vilerenko , что именно падает и какую ошибку выдает? Сейчас на большинстве CPU есть VT технологии, так что CPU работает прозрачно и идентично. А вот переферийные устройства: сети, диски, видеокарты, мониторы и т.д. - свои виртуальные. С одной стороны PCIe устройства можно прокинуть напрямую в виртуалку при включенной на проце VT-d технологии, но с другой там тоже возникают тонкости при обмене напрямую между разными PCIe устройствами. У меня наоборот проблема, на одном и том же образе VMWare у всех работает, какое бы железо под ней не было, а вот на голом железе - не всегда, тупо не каждый Linux запуститься, не каждый сетевуху найдет и т.д. 1) Падает свежесобранное Qt-приложение по ошибке записи по недопустимому адресу типа 0x00000007, причём в совершенно тупом коде, типа клик по комбобоксу. Код не менялся тыщу лет, просто был перекомпилен. Работает под linux, под windows на старой версии Qt (4.8), не хочет на Qt 5.2.1. Работает в Debug как часы. 2) Падает Qt-шная утилита uic.exe, скомпиленая автоматически самим Qt, причём в файле проекта у этой uic.exe есть такой прикольный каммент, который я процитировал в первом посте топика. Типа, "будет падать под QEMU если собрать с флагом -O2". Я его точно убрал, всё равно падает. Ошибка та же самая - memory access violation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 15:05 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenkoВася Уткин vilerenko , что именно падает и какую ошибку выдает? Сейчас на большинстве CPU есть VT технологии, так что CPU работает прозрачно и идентично. А вот переферийные устройства: сети, диски, видеокарты, мониторы и т.д. - свои виртуальные. С одной стороны PCIe устройства можно прокинуть напрямую в виртуалку при включенной на проце VT-d технологии, но с другой там тоже возникают тонкости при обмене напрямую между разными PCIe устройствами. У меня наоборот проблема, на одном и том же образе VMWare у всех работает, какое бы железо под ней не было, а вот на голом железе - не всегда, тупо не каждый Linux запуститься, не каждый сетевуху найдет и т.д. 1) Падает свежесобранное Qt-приложение по ошибке записи по недопустимому адресу типа 0x00000007, причём в совершенно тупом коде, типа клик по комбобоксу. Код не менялся тыщу лет, просто был перекомпилен. Работает под linux, под windows на старой версии Qt (4.8), не хочет на Qt 5.2.1. Работает в Debug как часы. 2) Падает Qt-шная утилита uic.exe, скомпиленая автоматически самим Qt, причём в файле проекта у этой uic.exe есть такой прикольный каммент, который я процитировал в первом посте топика. Типа, "будет падать под QEMU если собрать с флагом -O2". Я его точно убрал, всё равно падает. Ошибка та же самая - memory access violation. Если динамически линкуется с Qt, то может проблема не в виртуалках, а в багах/несовместимости версий Qt? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 15:13 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Падение при включении оптимизации это обычно баг компилятора. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 15:23 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Вася Уткинvilerenkoпропущено... 1) Падает свежесобранное Qt-приложение по ошибке записи по недопустимому адресу типа 0x00000007, причём в совершенно тупом коде, типа клик по комбобоксу. Код не менялся тыщу лет, просто был перекомпилен. Работает под linux, под windows на старой версии Qt (4.8), не хочет на Qt 5.2.1. Работает в Debug как часы. 2) Падает Qt-шная утилита uic.exe, скомпиленая автоматически самим Qt, причём в файле проекта у этой uic.exe есть такой прикольный каммент, который я процитировал в первом посте топика. Типа, "будет падать под QEMU если собрать с флагом -O2". Я его точно убрал, всё равно падает. Ошибка та же самая - memory access violation. Если динамически линкуется с Qt, то может проблема не в виртуалках, а в багах/несовместимости версий Qt? Всё скомпилено одним компилером, DLL взята из той версии, с которой всё линковалось при сборке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 15:29 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenkoВсё скомпилено одним компилером Версию котрого из партизана не выбить даже калёным железом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 15:49 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenkoВася Уткинпропущено... Если динамически линкуется с Qt, то может проблема не в виртуалках, а в багах/несовместимости версий Qt? Всё скомпилено одним компилером, DLL взята из той версии, с которой всё линковалось при сборке. А операционки идентичны, какой версии? Виртуалка какая, VMWare какой версии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 15:52 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Вася Уткинvilerenkoпропущено... Всё скомпилено одним компилером, DLL взята из той версии, с которой всё линковалось при сборке. А операционки идентичны, какой версии? Виртуалка какая, VMWare какой версии? win7-64, vs2010 - всё на ней компилилось и запускалось: и либы и приложение. VM: qemu-kvm-1.1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 16:02 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenkoПросто сейчас индустрия виртуализации так развита, что виртуалки уже воспринимаются как 100% эквивалент железке. Есть такое дело. Только эти виртуальщики мне лично создают 90% всех "технических проблем". И инструкции типа "does not guarantee the correct operation of the program when you install software on Virtual Machine of any type. In the case of specific problems in such installations, technical support is not provided" этих одержимых не сильно то останавливают. По поводу качества виртуалок - наверно на ПОЧТИ уровне. А вот по поводу "100% эквивалент железке". Ну допустим, все работает. А как нормально решать вопрос с привязкой лицензии к железу? И к чему ее привязывать? Потому что ключ всегда генерируется на основании ID-комбинации, кот. зависит от железа. Вот сидит такой деятель и переустанавливает свою чудо-машину по 10 раз в месяц из бэкапов. И честно считает что я ему должен новый ключ каждый раз подгонять. А я считаю что не должен. И мне что больше заняться нечем? Есть спецсофт типа AsProtect который позволяет учитывать виртуальную кухню нормальным образом? И можно ли например из VM-environment выцепить нормальный "ID" реального железа на кот. эту виртуалку 100 раз переустановили? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 16:08 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
vilerenkovs2010 Откуда у него взялся GCC-шный ключ -O2?.. Да он ещё не патченный... http://support.microsoft.com/kb/983509/en-us Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 16:13 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПадение при включении оптимизации это обычно баг компилятора. Наоборот, скорее всего криво написанная программа. Например ( отсюда ): Код: plaintext 1. 2. 3. 4. 5. В этой программе UB. В случае когда clp == NULL, выражение &clp->xdr_stream будет вычислено без сегфолта, т.к. для вычисления адреса не требуется фактический доступ к памяти. При этом если нет оптимизаций, то условие if (clp == NULL) будет выполнено и программа завершится. А вот если оптимизация включена, то компилятор пользуясь тем что выше по коду разыменовывают указатель (clp->) может посчитать его уже при компиляции никогда не равным NULL и вообще уберет проверку на NULL. Таким образом при NULL будет выполнен дальнейший код, в котором вполне вероятно уже есть и доступ к памяти через этот указатель, и прочие вещи приводящие к крэшу. ЗЫ. Хотя миф про ошибки в компилятора так греет душу, что программист готов в первую очередь поверить в него, а не в то что он ошибся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 16:18 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovvilerenkovs2010 Откуда у него взялся GCC-шный ключ -O2?.. Да он ещё не патченный... http://support.microsoft.com/kb/983509/en-us Я не говорю, что у него есть ключ O2, я просто привёл цитату из исходников, намекая на то, что не я первый отличает поведение компилятора в виртуалке и на железке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 16:35 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDimitry SibiryakovПадение при включении оптимизации это обычно баг компилятора. Наоборот, скорее всего криво написанная программа. Например ( отсюда ): Код: plaintext 1. 2. 3. 4. 5. В этой программе UB. В случае когда clp == NULL, выражение &clp->xdr_stream будет вычислено без сегфолта, т.к. для вычисления адреса не требуется фактический доступ к памяти. При этом если нет оптимизаций, то условие if (clp == NULL) будет выполнено и программа завершится. А вот если оптимизация включена , то компилятор пользуясь тем что выше по коду разыменовывают указатель (clp->) может посчитать его уже при компиляции никогда не равным NULL и вообще уберет проверку на NULL. Таким образом при NULL будет выполнен дальнейший код, в котором вполне вероятно уже есть и доступ к памяти через этот указатель, и прочие вещи приводящие к крэшу. А это где-то более подробно описано, в стандарте CPP или ещё где-то, что такая оптимизация возможна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 16:53 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Вася УткинА это где-то более подробно описано, в стандарте CPP или ещё где-то, что такая оптимизация возможна? В стандарте написано, что разыменование null-указателя это UB (clp->xdr_stream в примере). Т.е. возможно все, в т.ч. и такая оптимизация :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 16:57 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyкомпилятор пользуясь тем что выше по коду разыменовывают указатель (clp->) может посчитать его уже при компиляции никогда не равным NULL Ну так он при этом будет чертовски неправ, что и есть баг. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:09 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНу так он при этом будет чертовски неправ, что и есть баг. Когда в программе UB то компилятор всегда прав, что бы он не делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:12 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDimitry SibiryakovНу так он при этом будет чертовски неправ, что и есть баг. Когда в программе UB то компилятор всегда прав, что бы он не делал. Я бы поддержал этого наглого оратора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:16 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВ стандарте написано, что разыменование null-указателя это UB (clp->xdr_stream в примере). Интересно, какой это умник посчитал, что простая адресная арифметика типа "xdrs = clp + offset(xdr_stream)" может быть UB... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:27 |
|
||
|
Работать на железке, падать на виртуалке.
|
|||
|---|---|---|---|
|
#18+
Если кому-то очень сильно интересно посмотреть на падучее приложение: 1. Качнуть http://audigger.sourceforge.net/bin/audigger64-2014-03-11.zip 2. Запустить audigger.exe -> MENU (кнопка слева вверху) -> Open Audio -> выбрать любой нормальный WAV (или FLAC) (если нет своего, скачать 6 МБ - http://sourceforge.net/projects/audigger/files/Example-3.wav/download ). MP3/OGG/др. можно не пробовать. 3. Откроется спектрограмма. В шапке у спектрограммы, где имя открытого файла, будет комбобокс, в котором будет написано 2048. Надо щёлкнуть по этому комбобоксу. CRASH! ACCESS VIOLATION! Хотя на мыше-колесо нормально реагирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2014, 17:28 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=63&tid=2019622]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 159ms |

| 0 / 0 |
