修正: strncpy 関数を呼び出す MSVCR90.dll ファイルを使用して、x64 プラットフォーム用にビルドするように構成されたアプリケーションを実行すると、"'application_name' でハンドルされない win32 例外が発生しました" というエラー メッセージが表示される

現象

Msvcr90.dll ファイルを使用して x64 プラットフォーム用にビルドされるように構成されたアプリケーションがあります。 アプリケーションが strncpy 関数を呼び出します。 アプリケーションを実行すると、Visual Studio の Just-In-Time デバッガー ウィンドウに次のエラー メッセージが表示されることがあります。

'application_name' でハンドルされていない win32 例外が発生しました

呼び出し履歴チェックすると、Msvcr90.dll ファイルでアクセス違反がトリガーされ、アプリケーションが strncpy 関数で応答しなくなったことがわかる場合があります。 この問題は、以下の条件に該当する場合に発生します。

  • ソース バッファーは、割り当てられたページの末尾まで拡張されます。
  • このページの次のバイトは、実行中のプロセスに属していません。
  • コピーされる長さは 8 の偶数倍数です。
  • コピーされる長さには、ソース バッファーの最後のバイトが含まれます。

原因

この問題は、strncpy 関数がソース バッファーの次のバイトにアクセスしようとするため発生します。 この問題は、一部の CRT ライブラリ関数の新しい最適化によって発生します。

解決策

修正プログラムの情報

サポートされている修正プログラムが Microsoft から提供されています。 ただし、この記事で説明されている問題のみを修正することを目的としています。 この特定の問題が発生しているシステムにのみ適用してください。 この修正プログラムは、追加のテストを受ける可能性があります。 したがって、この問題による深刻な影響がない場合は、この修正プログラムを含む次の Visual Studio 2008 Service Pack を待つことをお勧めします。

この問題を直ちに解決するには、Microsoft Customer Support Services に連絡して修正プログラムを入手してください。 Microsoft Customer Support Services の電話番号一覧およびサポート料金については、次のマイクロソフト Web サイトを参照してください。

http://support.microsoft.com/contactus/?ws=support注: Microsoft サポート担当者が、特定の更新プログラムを適用することにより問題が解決されると判断した場合、まれに通常サポート依頼にかかる料金が免除されることがあります。 ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

前提条件

この修正プログラムを適用するには、Visual Studio 2008 Service Pack 1 がインストールされている必要があります。

再起動の必要性

この修正プログラムの適用後にコンピューターを再起動する必要はありません。

修正プログラムの置き換えに関する情報

この修正プログラムを適用しても、他の修正プログラムは置き換えられません。

ファイル情報

修正プログラム (英語版) のファイル属性は次表のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。 これらのファイルの日付と時刻は世界協定時 (UTC) で記載されています。 ファイル情報に表示される時刻は、ローカル時刻に変換されています。 UTC とローカル時刻との時差を確認するには、[コントロール パネル] の [日付と時刻][タイム ゾーン] タブを使用してください。

ファイル名 ファイルのバージョン ファイル サイズ 日付 時刻 プラットフォーム
Atl90.dll 9.0.30729.162 159,552 2008 年 10 月 14 日 02:32 x86
Mfc90.dll 9.0.30729.162 5,084,480 2008 年 10 月 14 日 01:12 x64
Mfc90.dll 9.0.30729.162 3,766,080 2008 年 10 月 14 日 02:32 x86
Mfc90chs.dll 9.0.30729.162 36,680 2008 年 10 月 14 日 01:12 x64
Mfc90chs.dll 9.0.30729.162 36,680 2008 年 10 月 14 日 02:32 x86
Mfc90cht.dll 9.0.30729.162 37,704 2008 年 10 月 14 日 01:12 x64
Mfc90cht.dll 9.0.30729.162 37,704 2008 年 10 月 14 日 02:32 x86
Mfc90d.dll 9.0.30729.162 7,419,200 2008 年 10 月 14 日 01:12 x64
Mfc90d.dll 9.0.30729.162 5,934,912 2008 年 10 月 14 日 02:32 x86
Mfc90deu.dll 9.0.30729.162 64,328 2008 年 10 月 14 日 01:12 x64
Mfc90deu.dll 9.0.30729.162 64,328 2008 年 10 月 14 日 02:32 x86
Mfc90enu.dll 9.0.30729.162 54,600 2008 年 10 月 14 日 01:12 x64
Mfc90enu.dll 9.0.30729.162 54,600 2008 年 10 月 14 日 02:32 x86
Mfc90esn.dll 9.0.30729.162 62,792 2008 年 10 月 14 日 01:12 x64
Mfc90esn.dll 9.0.30729.162 62,792 2008 年 10 月 14 日 02:32 x86
Mfc90esp.dll 9.0.30729.162 62,792 2008 年 10 月 14 日 01:12 x64
Mfc90esp.dll 9.0.30729.162 62,792 2008 年 10 月 14 日 02:32 x86
Mfc90fra.dll 9.0.30729.162 63,816 2008 年 10 月 14 日 01:12 x64
Mfc90fra.dll 9.0.30729.162 63,816 2008 年 10 月 14 日 02:32 x86
Mfc90ita.dll 9.0.30729.162 62,280 2008 年 10 月 14 日 01:12 x64
Mfc90ita.dll 9.0.30729.162 62,280 2008 年 10 月 14 日 02:32 x86
Mfc90jpn.dll 9.0.30729.162 44,360 2008 年 10 月 14 日 01:12 x64
Mfc90jpn.dll 9.0.30729.162 44,360 2008 年 10 月 14 日 02:32 x86
Mfc90kor.dll 9.0.30729.162 43,848 2008 年 10 月 14 日 01:12 x64
Mfc90kor.dll 9.0.30729.162 43,848 2008 年 10 月 14 日 02:32 x86
Mfc90u.dll 9.0.30729.162 5,103,424 2008 年 10 月 14 日 01:12 x64
Mfc90u.dll 9.0.30729.162 3,781,440 2008 年 10 月 14 日 02:32 x86
Mfc90ud.dll 9.0.30729.162 7,464,264 2008 年 10 月 14 日 01:12 x64
Mfc90ud.dll 9.0.30729.162 5,980,488 2008 年 10 月 14 日 02:32 x86
Mfcm90.dll 9.0.30729.162 67,072 2008 年 10 月 14 日 00:50 x64
Mfcm90.dll 9.0.30729.162 59,904 2008 年 10 月 14 日 00:20 x86
Mfcm90d.dll 9.0.30729.162 93,184 2008 年 10 月 14 日 00:50 x64
Mfcm90d.dll 9.0.30729.162 80,896 2008 年 10 月 14 日 00:20 x86
Mfcm90u.dll 9.0.30729.162 67,072 2008 年 10 月 14 日 00:50 x64
Mfcm90u.dll 9.0.30729.162 59,904 2008 年 10 月 14 日 00:20 x86
Mfcm90ud.dll 9.0.30729.162 93,696 2008 年 10 月 14 日 00:50 x64
Mfcm90ud.dll 9.0.30729.162 80,896 2008 年 10 月 14 日 00:20 x86
Mfcmifc80u.dll 9.0.30729.162 14,152 2008 年 10 月 20 日 17:19 x86
Microsoft.visualc.stlclr.dll 9.0.30729.162 49,000 2008 年 10 月 20 日 17:19 x86
Msvcm90.dll 9.0.30729.162 225,280 2008 年 10 月 13 日 21:59 x86
Msvcm90.dll 9.0.30729.162 324,096 2008 年 10 月 13 日 22:36 IA-64
Msvcm90.dll 9.0.30729.162 245,760 2008 年 10 月 13 日 23:40 x64
Msvcm90d.dll 9.0.30729.162 312,832 2008 年 10 月 13 日 21:59 x86
Msvcm90d.dll 9.0.30729.162 429,568 2008 年 10 月 13 日 22:37 IA-64
Msvcm90d.dll 9.0.30729.162 333,312 2008 年 10 月 13 日 23:40 x64
Msvcp90.dll 9.0.30729.162 1,467,208 2008 年 10 月 14 日 00:56 IA-64
Msvcp90.dll 9.0.30729.162 854,344 2008 年 10 月 14 日 01:12 x64
Msvcp90.dll 9.0.30729.162 570,696 2008 年 10 月 14 日 02:32 x86
Msvcp90d.dll 9.0.30729.162 2,514,760 2008 年 10 月 14 日 00:56 IA-64
Msvcp90d.dll 9.0.30729.162 1,121,608 2008 年 10 月 14 日 01:12 x64
Msvcp90d.dll 9.0.30729.162 873,288 2008 年 10 月 14 日 02:32 x86
Msvcr90.dll 9.0.30729.162 1,504,584 2008 年 10 月 14 日 00:56 IA-64
Msvcr90.dll 9.0.30729.162 624,456 2008 年 10 月 14 日 01:12 x64
Msvcr90.dll 9.0.30729.162 653,640 2008 年 10 月 14 日 02:32 x86
Msvcr90d.dll 9.0.30729.162 3,599,688 2008 年 10 月 14 日 00:56 IA-64
Msvcr90d.dll 9.0.30729.162 1,349,960 2008 年 10 月 14 日 01:12 x64
Msvcr90d.dll 9.0.30729.162 1,178,440 2008 年 10 月 14 日 02:32 x86
Vcomp90.dll 9.0.30729.162 142,664 2008 年 10 月 14 日 00:56 IA-64
Vcomp90.dll 9.0.30729.162 57,672 2008 年 10 月 14 日 01:12 x64
Vcomp90.dll 9.0.30729.162 52,040 2008 年 10 月 14 日 02:32 x86
Vcomp90d.dll 9.0.30729.162 317,256 2008 年 10 月 14 日 00:56 IA-64
Vcomp90d.dll 9.0.30729.162 105,800 2008 年 10 月 14 日 01:12 x64
Vcomp90d.dll 9.0.30729.162 89,416 2008 年 10 月 14 日 02:32 x86
Vcomp90ui.dll 9.0.30729.162 11,592 2008 年 10 月 20 日 17:19 x86
Vcredist_ia64.exe 9.0.30729.162 4,712,272 2008 年 10 月 14 日 1,932 x86
Vcredist_x64.exe 9.0.30729.162 5,236,560 2008 年 10 月 14 日 1,936 x86
Vcredist_x86.exe 9.0.30729.162 4,496,208 2008 年 10 月 14 日 1,928 x86

回避策

この問題を回避するには、次のいずれかの方法を使用します。

  • 「現象」に記載されている 4 つの条件のいずれかを変更します。

  • strncpy 関数を、memcpyfunction 関数や lstrcpyn 関数など、同様の機能を持つ他の関数に置き換えます。

    注: これらのコピー関数は若干異なります。 たとえば、指定された長さより前に null バイトが検出された場合、memcpy 関数は文字列のコピーを終了しません。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

追加情報

ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

824684 Microsoft のソフトウェア更新プログラムの説明で使用される一般的な用語の解説