powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работать на железке, падать на виртуалке.
25 сообщений из 29, страница 1 из 2
Работать на железке, падать на виртуалке.
    #38585105
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как такое возможно физически?

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*?)

Почему что-то в принципе может работать по-разному на виртуалке и на реальной железке? Не, вопрос не в том "НЕУЖЕЛИ ЭТО РЕАЛЬНО" (да, реально), хочется понять технические причины этого (для общего развития). Что изнутри виртуалки выглядит иначе, чем изнутри реальной железки так, что это может касаться юзерспейс-кода? Понятно, что виртуалки бывают разные, но интересны разные истории "из жизни" - что разработчикам виртуалок не удаётся сделать похожим на реальное железо так, что это видно выполняющемуся в виртуалке коду? Я понимаю, что повторить поведение ЦП (сэмулировать) наверное очень тяжело. Что компилятор может рассчитывать на какую-то тонкость в поведении и как-то хитро оптимизировать код, так, что в виртуалке это выходит боком. Но что именно?
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585116
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какую виртуалку можете посоветовать для компиления C++ проектов? Или без компиления и тестов на реальном железе в любом случае это будет рисковано?
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585198
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vilerenko,

Я сам лично никогда ничего не тестирую на VM (на тестовом компе использую "много дисков" и много OS -поверх железа).
Более того никогда их не устанавливал и в глаза не видел.
Чего нельзя сказать про клиентов - повальная болезнь к виртуалкам.

Дык вот. Если у клиента возникает неопознанная проблема (типа crash и т.п.) и выясняется что клиент юзает VM то, согласно выработанному годами подходу, клиент идет в баню (т.е. ему предписывается установить софт на нормальное железо).
В лучшем случае, ему рекомендуется обратиться к девелоперу своей чудо(VM)-машины, что конечно вряд ли поможет, но по сути проблемы VM -это проблемы разработчиков этих VM а не твои, как разработчика программ для виндов, или чего у тебя там.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585243
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77vilerenko,

Я сам лично никогда ничего не тестирую на VM (на тестовом компе использую "много дисков" и много OS -поверх железа).
Более того никогда их не устанавливал и в глаза не видел.
Чего нельзя сказать про клиентов - повальная болезнь к виртуалкам.

Дык вот. Если у клиента возникает неопознанная проблема (типа crash и т.п.) и выясняется что клиент юзает VM то, согласно выработанному годами подходу, клиент идет в баню (т.е. ему предписывается установить софт на нормальное железо).
В лучшем случае, ему рекомендуется обратиться к девелоперу своей чудо(VM)-машины, что конечно вряд ли поможет, но по сути проблемы VM -это проблемы разработчиков этих VM а не твои, как разработчика программ для виндов, или чего у тебя там.
Ну в принципе логично. Просто сейчас индустрия виртуализации так развита, что виртуалки уже воспринимаются как 100% эквивалент железке.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585249
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vilerenko , что именно падает и какую ошибку выдает?

Сейчас на большинстве CPU есть VT технологии, так что CPU работает прозрачно и идентично.
А вот переферийные устройства: сети, диски, видеокарты, мониторы и т.д. - свои виртуальные.
С одной стороны PCIe устройства можно прокинуть напрямую в виртуалку при включенной на проце VT-d технологии, но с другой там тоже возникают тонкости при обмене напрямую между разными PCIe устройствами.

У меня наоборот проблема, на одном и том же образе VMWare у всех работает, какое бы железо под ней не было, а вот на голом железе - не всегда, тупо не каждый Linux запуститься, не каждый сетевуху найдет и т.д.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585265
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vilerenkoПочему что-то в принципе может работать по-разному на виртуалке и на
реальной железке?
Потому же почему оно может работать по-разному на разном железе. Например, гонки потоков
именно так себя и проявляют: где-то работает, а где-то всё падает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585266
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.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585276
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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?
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585288
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Падение при включении оптимизации это обычно баг компилятора.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585299
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткин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 взята из той версии, с которой всё линковалось при сборке.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585344
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vilerenkoВсё скомпилено одним компилером
Версию котрого из партизана не выбить даже калёным железом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585350
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vilerenkoВася Уткинпропущено...

Если динамически линкуется с Qt, то может проблема не в виртуалках, а в багах/несовместимости версий Qt?
Всё скомпилено одним компилером, DLL взята из той версии, с которой всё линковалось при сборке.
А операционки идентичны, какой версии?
Виртуалка какая, VMWare какой версии?
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585360
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася Уткинvilerenkoпропущено...

Всё скомпилено одним компилером, DLL взята из той версии, с которой всё линковалось при сборке.
А операционки идентичны, какой версии?
Виртуалка какая, VMWare какой версии?
win7-64, vs2010 - всё на ней компилилось и запускалось: и либы и приложение.
VM: qemu-kvm-1.1.2
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585370
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 раз переустановили?
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585381
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vilerenkovs2010
Откуда у него взялся GCC-шный ключ -O2?.. Да он ещё не патченный...
http://support.microsoft.com/kb/983509/en-us
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585391
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПадение при включении оптимизации это обычно баг компилятора.
Наоборот, скорее всего криво написанная программа.
Например ( отсюда ):
Код: plaintext
1.
2.
3.
4.
5.
  XDR *xdrs = &clp->xdr_stream;
  ....
  if (clp == NULL)
    return RPC_FAILED;
  ....



В этой программе UB.
В случае когда clp == NULL, выражение &clp->xdr_stream будет вычислено без сегфолта, т.к. для вычисления адреса не требуется фактический доступ к памяти.
При этом если нет оптимизаций, то условие if (clp == NULL) будет выполнено и программа завершится.
А вот если оптимизация включена, то компилятор пользуясь тем что выше по коду разыменовывают указатель (clp->) может посчитать его уже при компиляции никогда не равным NULL и вообще уберет проверку на NULL.
Таким образом при NULL будет выполнен дальнейший код, в котором вполне вероятно уже есть и доступ к памяти через этот указатель, и прочие вещи приводящие к крэшу.

ЗЫ. Хотя миф про ошибки в компилятора так греет душу, что программист готов в первую очередь поверить в него, а не в то что он ошибся
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585416
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovvilerenkovs2010
Откуда у него взялся GCC-шный ключ -O2?.. Да он ещё не патченный...
http://support.microsoft.com/kb/983509/en-us

Я не говорю, что у него есть ключ O2, я просто привёл цитату из исходников, намекая на то, что не я первый отличает поведение компилятора в виртуалке и на железке.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585443
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyDimitry SibiryakovПадение при включении оптимизации это обычно баг компилятора.
Наоборот, скорее всего криво написанная программа.
Например ( отсюда ):
Код: plaintext
1.
2.
3.
4.
5.
  XDR *xdrs = &clp->xdr_stream;
  ....
  if (clp == NULL)
    return RPC_FAILED;
  ....



В этой программе UB.
В случае когда clp == NULL, выражение &clp->xdr_stream будет вычислено без сегфолта, т.к. для вычисления адреса не требуется фактический доступ к памяти.
При этом если нет оптимизаций, то условие if (clp == NULL) будет выполнено и программа завершится.
А вот если оптимизация включена , то компилятор пользуясь тем что выше по коду разыменовывают указатель (clp->) может посчитать его уже при компиляции никогда не равным NULL и вообще уберет проверку на NULL.
Таким образом при NULL будет выполнен дальнейший код, в котором вполне вероятно уже есть и доступ к памяти через этот указатель, и прочие вещи приводящие к крэшу.
А это где-то более подробно описано, в стандарте CPP или ещё где-то, что такая оптимизация возможна?
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585451
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася УткинА это где-то более подробно описано, в стандарте CPP или ещё где-то, что такая оптимизация возможна?
В стандарте написано, что разыменование null-указателя это UB (clp->xdr_stream в примере).
Т.е. возможно все, в т.ч. и такая оптимизация :)
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585465
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyкомпилятор пользуясь тем что выше по коду разыменовывают указатель
(clp->) может посчитать его уже при компиляции никогда не равным NULL
Ну так он при этом будет чертовски неправ, что и есть баг.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585470
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу так он при этом будет чертовски неправ, что и есть баг.
Когда в программе UB то компилятор всегда прав, что бы он не делал.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585478
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyDimitry SibiryakovНу так он при этом будет чертовски неправ, что и есть баг.
Когда в программе UB то компилятор всегда прав, что бы он не делал.
Я бы поддержал этого наглого оратора.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585498
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВ стандарте написано, что разыменование null-указателя это UB
(clp->xdr_stream в примере).
Интересно, какой это умник посчитал, что простая адресная арифметика типа "xdrs = clp +
offset(xdr_stream)" может быть UB...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585499
vilerenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кому-то очень сильно интересно посмотреть на падучее приложение:
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! Хотя на мыше-колесо нормально реагирует.
...
Рейтинг: 0 / 0
Работать на железке, падать на виртуалке.
    #38585513
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При работе с Qt не следует удивляться, что оно временами падает. Следует удивляться, что
оно временами работает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работать на железке, падать на виртуалке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]