Open VictorVG opened 7 years ago
За компанию в этой версии компилятора вылезла ещё одна ошибка - в функции rand_s в таком вот цикле ГПСЧ:
For (n = 0; n <count; n++)
Salt[n] = (randSeed % 255) + 1;
Salt[n] = 0;
}
в конфиге релиза для х64 он похоже пытается на ноль делить и dmex был вынужден целый кусок кода переписывать https://github.com/processhacker2/processhacker2/commit/e0406b518dc2cbc0454633e32b69b98fa88e2d85 только для её обхода. Плюс пути к msbuild надо указывать с учётом каталога куда поставлена студия и её редакции - Community, Professional или Enterprise (в Реестре для сей радости более ничего нет).
То что выкинули rand_s може - хорошо от нее возникают падения в некоторых конфигурациях (зовется abort()) http://www.sql.ru/forum/1214592/rand-s-i-win32-padenie-bazy
А у себя? Ну так там старая плюха которая ещё в IBM S/360 Algol-68 была - в цикле при вызове random() нельзя обнулять частичный результат ибо он делитель. Ловим деление на ноль с флагами переполнения и потери точности в слове состояния ЦП. И как последствие срабатывают схемы контроля ЦП, исключение летит в ядро и планировщик заданий ОС отрабатывая процедуру ABORT снимает сбойную задачу.
Вот гляди что сии поганцы нам подкинули - они переместили бинарник msbuild.exe живший в %ProgramFiles(x86)%\MSBuild\14.0\bin в каталог самой студии, причём его путь зависит от имени её редакции - _%ProgramFiles(x86)%\Microsoft Visual Studio\2017{имя_редакциистудии}\MSBuild\15.0\Bin и теперь тем кто будет сей "радостью" пользоваться придётся ещё мэйки/проекты/солюшены править под имя редакции community | professional | enterprise . Я у ребят все три установленных редакции видел и меня такая перспектива "радует" .... Вот тут я у dmex-а просил помощи, на борде ребят спросил - но и они не ту гипотезу высказали, а после сам разобрался - наитие. Сюань как мысль пришла, но посмотрел в скрипт - распишитесь и получите. Поправил и всё собирается как и ранее. Давай оставим ребятам - может кому ещё эта подсказка нервы сбережёт?
https://github.com/processhacker2/processhacker2/issues/109 I found thats point needed correct - is ./build/internal/build.ps1 :: function BuildSolution([string] $FileName)
Old value $msBuild = :
needed change up to new value $msBuild = :
then M$ move msbuild in to new location and build is [SUCCESS].