現象
次のような状況で問題が発生します。
-
グローバルな最適化 (/Og)] オプションを有効にするには、次のオプションのいずれかの操作を有効にします。
-
/O1
-
/O2
-
/Ox
-
-
Microsoft Visual C++ ソース ファイルをビルドするには、Microsoft Visual Studio 2008 Service Pack 1 (SP1) を使用します。
-
ソース ファイルでは、 setjmp関数、 longjmp関数、または両方の関数を呼び出します。
このシナリオでは、コンパイラは、別のローカル変数を格納するのに同じスタック オフセットを使用することがあります。 したがって、生成されたアプリケーションを実行すると、予期しない動作が発生します。
原因
オプティマイザーは、 setjmp関数またはlongjmp関数については考慮しませんので、この問題が発生します。 これにより、オプティマイザーは、ローカル変数の有効期間を正しく計算します。 1 つの変数が変更されると、別の変数が予期せず変更可能性があります。
解決方法
修正プログラムの情報
サポートされている修正プログラムは、マイクロソフトから入手可能です。 ただし、この修正プログラムは、この資料に記載された問題のみを修正するものです。 この修正プログラムは、この資料に記載された問題があったシステムのみに対して適用してください。 この修正プログラムは、今後さらにテストを行う場合があります。 したがって、この問題の影響が深刻でない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことをお勧めします。この問題を解決するには、修正プログラムを入手するのには、Microsoft カスタマー サポート サービスに問い合わせてください。 マイクロソフト カスタマー サービス サポートの電話番号一覧または別のサービス リクエストの作成については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support注: 4013469注: Microsoft サポート担当者が、特定の更新プログラムを適用することにより問題が解決されると判断した場合、まれに通常サポート依頼にかかる料金が免除されることがあります。 追加の質問および問題の特定のアップデートの対象にはなりませんが、通常のサポート料金が適用されます。この修正プログラムを Microsoft Developer Network (MSDN) コード ギャラリーからダウンロードするには、次のマイクロソフト web サイトを参照してください。
http://code.msdn.microsoft.com/KB2498381注: MSDN コード ギャラリーの修正プログラムは利用可能な言語を表示します。 自分の言語が一覧に表示されない場合は、その言語用のコード ギャラリー リソース ページが使用できないためです。または、次のマイクロソフト接続 web サイトからこの修正プログラムをダウンロードすることができます。
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 |
2011 年 2 月-25- |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,362,688 |
2011 年 2 月-25- |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
2,493,248 |
2011 年 2 月-25- |
01:25 |
x86 |
C2.dll |
15.0.30729.6147 |
3,018,048 |
2011 年 2 月-25- |
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 |
2011 年 2 月-25- |
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 |
回避策
この問題を回避するには、コンパイラは変数の有効期間に注意することができますように、関数の初期段階でローカル変数を初期化します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細情報
ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。
824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明