ИСПРАВЛЕНИЕ: Непредвиденное поведение при выполнении созданного приложения Visual Studio 2008 с пакетом обновления 1, вызывает функции setjmp или longjmp в исходном файле

Переводы статьи Переводы статьи
Код статьи: 2498381
Развернуть все | Свернуть все

В этой статье

Проблема

Рассмотрим следующий сценарий:
  • Включить параметр (глобальной оптимизации)/Og) с помощью одного из следующих параметров:
    • / O1 
    • / O2 
    • /Ox 
  • Построение исходного файла Microsoft Visual C++ с помощью Microsoft Visual Studio 2008 пакетом обновления 1 (SP1).
  • Вызовы исходного файлаsetjmpфункции,longjmpфункции, или обе функции.

В этом случае компилятор может использовать смещения стека для хранения локальных переменных. Таким образом непредвиденное поведение наблюдается при выполнении созданного приложения.

Причина

Данная проблема возникает, потому что оптимизатор не учитываются setjmpфункция илиlongjmpфункция. В этом случае оптимизатор неправильно рассчитать время жизни локальных переменных. При изменении одной переменной другой переменной может быть изменено неожиданно.

Решение

Сведения об исправлении

Корпорация Майкрософт выпустила исправление. Однако данное исправление предназначено для устранения проблемы, описанной в этой статье. Это исправление необходимо применяйте только в тех системах, в которых наблюдается проблема, описанная в данной статье. Это исправление может проходить дополнительное тестирование. Таким образом Если вы не представляет особой эта проблема, рекомендуется отложить ее решение до выхода ближайшего пакета обновления, содержащего это исправление.

Чтобы решить проблему немедленно, обратитесь в службу технической поддержки Майкрософт для получения исправления. Для получения полного списка телефонов службы поддержки и обслуживания клиентов корпорации Майкрософт или создать отдельный запрос посетите следующий веб-узел корпорации Майкрософт:
http://support.Microsoft.com/contactus/?ws=Support
Примечание В особых случаях, предусмотренная для звонков в службу поддержки может быть отменена, если специалистом службы поддержки Майкрософт определяет, что решения проблемы является специально выпущенное. Затраты на обычные службы поддержки будут применяться дополнительные вопросы и проблемы, которые не соответствуют требованиям особым обновлением.

Чтобы загрузить данное исправление из коллекции кода Microsoft Developer Network (MSDN), посетите следующий веб-узел корпорации Майкрософт:
http://Code.MSDN.Microsoft.com/KB2498381

Примечание Коллекции кода MSDN отображаются языки, для которых доступно исправление. Если язык в списке не отображается, значит страница коллекции кода ресурсов недоступна для данного языка.

Или исправления можно загрузить со следующих веб-узла Microsoft Connect:
https://Connect.Microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID = 34826

Необходимые условия

Данное исправление необходимо иметь Microsoft Visual Studio 2008 службы с пакетом обновления 1 установлен.

Информация о перезагрузке

У вас нет необходимости перезагружать компьютер, если после установки данного исправления были остановлены все экземпляры Visual Studio.

Сведения о замене исправлений

Это исправление не заменяет ранее выпущенные исправления.

Сведения о файлах

Общая версия данного исправления содержит версии файлов, атрибуты которых указаны в приведенных ниже таблицах. Дата и время для файлов указаны в формате общего скоординированного времени (UTC). Дата и время для файлов на локальном компьютере, отображаются в местном времени вместе с вашей текущей смещения летнего времени (DST). Кроме того Дата и время могут изменяться при выполнении определенных операций с файлами.
Свернуть эту таблицуРазвернуть эту таблицу
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
C2.dll15.0.30729.61472,283,84025 Февраля 201101: 25x 86
C2.dll15.0.30729.61472,362,68825 Февраля 201101: 25x 86
C2.dll15.0.30729.61472,493,24825 Февраля 201101: 25x 86
C2.dll15.0.30729.61473,018,04825 Февраля 201101: 25x 64
C2.dll15.0.30729.61477,263,04025 Февраля 201101: 25IA-64
LINK.exe9.0.30729.61471,055,56025 Февраля 201101: 25x 64
LINK.exe9.0.30729.61472,135,36825 Февраля 201101: 25IA-64
LINK.exe9.0.30729.6147800,58425 Февраля 201101: 25x 86



Временное решение

Чтобы обойти эту проблему, таким образом, компилятор может иметь в виду время жизни переменных инициализируйте локальные переменные в начале функции.

Статус

Корпорация Майкрософт подтверждает, что это проблема в продуктах Microsoft, перечисленных в разделе «Относится к».

Дополнительная информация

Для получения дополнительных сведений о терминологии, обновление программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Свойства

Код статьи: 2498381 - Последний отзыв: 21 апреля 2011 г. - Revision: 3.0
Ключевые слова: 
kbqfe kbhotfixserver kbfix kbexpertiseinter kbsurveynew kbbug kbmt KB2498381 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:2498381

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com