Добрый день!
Подскажите, что делать в такой ситуации:
Есть цикл, который распараллелен с помощью OpenMP
Например:
#pragma omp parallel for
for( int indexW = 0; indexW < w; indexW ++ )
{
BYTE &dst = img.at( indexW );
dst /= 2;
}
Вокруг него поставлены маркеры VMProtectBeginUltra.
для разработки использую visual studio 2008 + intel C++ composer XE 2011 Update 7.
Программа падает на этом цикле, если используется следующее сочетание:
1) платформа - x64
2) компилятор - intel
3) конфигурация - release
4) openmp включен
Во всех остальных вариантах - работает, то есть например, если исопльзовать компилятор из visual studio - все в порядке
архив с проектом, исходником и бинарниками.
https://www.dropbox.com/s/66dmahkfzgiov ... _clean.zip
На самом деле проблема была в реальном проекте, начал копать и оказалось, что даже в таком простом месте воспроизводится бага. В исходном проекте было немного по-другому. Там было два цикла, оба распараллелены через openmp. У одного именованный маркер сохранялся и был виден в GUI VMprotect, а у другого - маркер почему-то отображался неименованным. Ну и программа падала.
Подобные штуки у меня периодически всплывают и решать приходится перестановкой маркера или инструкций местами. Что я делаю не так? Или это бага компилятора/vmprotect?
intel compiler + openmp + x64
Re: intel compiler + openmp + x64
А можно еще куда-нибудь выложить libiomp5md.dll?
Re: intel compiler + openmp + x64
Оригинальный файл не хочет запускаться:
---------------------------
TestOMPSlock.exe - Ошибка приложения
---------------------------
Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК".
---------------------------
ОК
---------------------------
---------------------------
TestOMPSlock.exe - Ошибка приложения
---------------------------
Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК".
---------------------------
ОК
---------------------------
Re: intel compiler + openmp + x64
Извините, это была версия dll для Win32
вот версия для x64: https://www.dropbox.com/s/222ughzvyuxzk ... omp5md.dll
Еще оригинальный файл имеет зависимость от VMprotectSDK64.dll.
вот версия для x64: https://www.dropbox.com/s/222ughzvyuxzk ... omp5md.dll
Еще оригинальный файл имеет зависимость от VMprotectSDK64.dll.
Re: intel compiler + openmp + x64
Удалось запустить?
Re: intel compiler + openmp + x64
Исправленная версия отправлена на емаил, указанный при покупке VMProtect.
Проверяйте.
Проверяйте.
Re: intel compiler + openmp + x64
Потестировал. Не помогло, падает так же
Исходники с бинарниками
https://www.dropbox.com/s/ffv5qu0wbiz7g ... _clean.zip
Только бинарники
https://www.dropbox.com/s/4vp233x93nzem ... .2_bin.zip
Исходники с бинарниками
https://www.dropbox.com/s/ffv5qu0wbiz7g ... _clean.zip
Только бинарники
https://www.dropbox.com/s/4vp233x93nzem ... .2_bin.zip
Re: intel compiler + openmp + x64
А теперь падает совершенно по другой причине. Компилятор вывел одну ветку кода за границы маркера и в конце сделал обратный переход обратно. Вмпротект ничего не знает про такой финт ушами.
Re: intel compiler + openmp + x64
В версии 3.0 будет полностью переделан алгоритм определения границ маркера и такой проблемы больше не возникнет.