Симптоми
Да разгледаме следния сценарий:
-
Разрешите опцията глобален оптимизация (/Og) позволявайки една от следните опции:
-
/O1
-
/O2
-
/Ox
-
-
Компилация на Microsoft Visual C++ източник файл с помощта на Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Файла източник извиква функцията setjmp , функцията longjmp или и двете функции.
В този случай компилатор могат да използват същите изместване на стека за съхраняване на различни локални променливи. Затова неочаквано поведение може да възникне, когато стартирате приложението генерира.
Причина
Този проблем възниква, защото оптимизатор не отчита или setjmp функция на longjmp . Това води до оптимизатора за неправилно изчисляване на експлоатационния живот на локални променливи. Когато една променлива се променя, друга променлива може да се променя неочаквано.
Решение
Информация за актуалната корекция
Поддържана актуална корекция се предлага от Microsoft. Тази актуална корекция обаче е предназначена да коригира само проблема, описан в тази статия. Прилагайте тази корекция само към системи, изпитващи конкретния проблем, описан в тази статия. Може да се проведат допълнителни тестове на тази актуална корекция. Следователно ако не сте силно засегнати от този проблем, препоръчваме да изчакате следващата актуализация на софтуера, който ще съдържа тази корекция. За незабавно решаване на проблема, се обърнете към услугите за поддръжка на клиенти на Microsoft да получите актуалната корекция. За пълен списък на телефонните номера на Microsoft за обслужване на клиенти и поддръжка или да създадете отделна заявка за поддръжка посетете следния уеб сайт на Microsoft:
http://support.microsoft.com/contactus/?ws=supportЗабележка При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако професионалистът по поддръжка на Microsoft определи, че проблемът може да бъде решен със специфична актуализация. Обичайните такси за поддръжката ще важат за допълнителни въпроси и проблеми, които не спадат към съответната актуализация. За да изтеглите актуалната корекция от Microsoft Developer Network (MSDN) Code Gallery, посетете следния уеб сайт на Microsoft:
http://code.msdn.microsoft.com/KB2498381Забележка MSDN Code Gallery показва езиците, за които е налична актуалната корекция. Ако не виждате вашия език, това е защото Code Gallery ресурс страница не е налична за този език. Или, можете да изтеглите тази актуална корекция от следния уеб сайт на Microsoft Connect:
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=34826
Необходими условия:
За да приложите тази актуална корекция, трябва да имате Microsoft Visual Studio 2008 Service Pack 1 инсталиран.
Информация за рестартиране
Не трябва да рестартирате компютъра, след като инсталирате тази спешна корекция, ако сте спрели всички екземпляри на Visual Studio.
Информация за заместване на актуалната корекция
Тази актуална корекция не замества издадените актуални корекции.
Файлова информация
Глобалната версия на тази актуална корекция инсталира файлове, които имат атрибути, изброени в следващите таблици. Датите и часовете за тези файлове са изброени в координирано световно време (UTC). Датите и часовете за тези файлове на вашия компютър се показват в локалното ви време с текущото отместване за лятно часово време (DST). Освен това датите и часовете може да се променят, когато изпълните определени операции върху файловете.
Име на файл |
Версия на файла |
Размер на файла |
Дата |
Време |
Платформа |
---|---|---|---|---|---|
C2.dll |
15.0.30729.6147 |
2,283,840 |
25-февруари-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,362,688 |
25-февруари-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,493,248 |
25-февруари-2011 |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
3,018,048 |
25-февруари-2011 |
01:25 |
x64 |
C2.dll |
15.0.30729.6147 |
7,263,040 |
25-Feb-2011 |
01:25 |
IA-64 |
Link.exe |
9.0.30729.6147 |
1,055,560 |
25-февруари-2011 |
01:25 |
x64 |
Link.exe |
9.0.30729.6147 |
2,135,368 |
25-Feb-2011 |
01:25 |
IA-64 |
Link.exe |
9.0.30729.6147 |
800,584 |
25-Feb-2011 |
01:25 |
x86 |
Заобиколно решение
За да заобиколите този проблем, се инициализира локални променливи началото на функцията компилатор да бъде наясно с променливи живот.
Статус
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".
Повече информация
За повече информация относно терминологията за актуализация на софтуера щракнете върху следния номер на статия, за да я видите в базата данни на Microsoft:
824684 Описание на стандартната терминология, използвана за описание на софтуерните актуализации на Microsoft