現象
X64 のビルドする構成されているアプリケーションがある Msvcr90.dll ファイルを使用してプラットフォームです。アプリケーションでは、 strncpy関数を呼び出します。アプリケーションを実行すると、Visual Studio Just-In-Time デバッガー ウィンドウに次のエラー メッセージが表示される場合があります。
'Application_name' で、ハンドルされていない win32 の例外が発生しました。
コール スタックをチェックするときに Msvcr90.dll ファイルでアクセス違反が発生したし、アプリケーションが、 strncpy関数で応答を停止したことがあります。この問題は、次の条件に該当する場合に発生します。
-
ソース バッファーは、割り当て済みのページの最後に拡張します。
-
このページの後、次のバイトは、実行中のプロセスに属していません。
-
コピーされる長さは、8 の倍数です。
-
長さコピーするにはには、コピー元のバッファーの最後のバイトが含まれています。
原因
Strncpy関数は、ソース バッファーの後、次のバイトにアクセスしようとしていますので、この問題が発生します。この問題は、一部の CRT ライブラリの関数への新しい最適化が導入されています。
解決策
修正プログラムの情報
サポートされている修正プログラムはマイクロソフトから現在入手可能です。ただし、この資料に記載されている問題のみを修正するものです。この特定の問題が発生したシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行うことがあります。この問題で深刻な影響を受けていない場合は、この修正プログラムが含まれる次の Visual Studio 2008 service pack のリリースを待つことを勧めします。
この問題を解決するには、修正プログラムを入手するのには、Microsoft カスタマー サポート サービスに問い合わせてください。マイクロソフト カスタマー サポート サービスの電話番号とサポートのコストに関する情報の一覧については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support注: 特別な場合では、まれに通常サポート コールの発生に料金 Microsoft Support 担当者は、特定の更新で問題が解決されると判断した。追加の質問および問題の特定のアップデートの対象にはなりませんが、通常のサポート料金が適用されます。
必要条件
Visual Studio 2008 Service Pack 1 インストールこの修正プログラムを適用する必要があります。
再起動の必要性
この修正プログラムの適用後にコンピュータを再起動する必要はありません。
修正プログラムの置き換えに関する情報
この修正プログラムによって他の修正プログラムが置き換わることはありません。
ファイル情報
修正プログラム (英語版) のファイル属性は次表のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。ファイル情報に表示される時刻は、ローカル時刻に変換されています。UTC とローカル時刻との時差を確認するには、コントロール パネルの [日付と時刻] の [タイム ゾーン] タブを使用してください。
ファイル名 |
ファイル バージョン |
ファイル サイズ |
日付 |
時刻 |
プラットフォーム |
---|---|---|---|---|---|
Atl90.dll |
9.0.30729.162 |
159,552 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90.dll |
9.0.30729.162 |
5,084,480 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90.dll |
9.0.30729.162 |
3,766,080 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90chs.dll |
9.0.30729.162 |
36,680 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90chs.dll |
9.0.30729.162 |
36,680 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90cht.dll |
9.0.30729.162 |
37,704 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90cht.dll |
9.0.30729.162 |
37,704 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90d.dll |
9.0.30729.162 |
7,419,200 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90d.dll |
9.0.30729.162 |
5,934,912 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90deu.dll |
9.0.30729.162 |
64,328 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90deu.dll |
9.0.30729.162 |
64,328 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90enu.dll |
9.0.30729.162 |
54,600 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90enu.dll |
9.0.30729.162 |
54,600 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90esn.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90esn.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90esp.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90esp.dll |
9.0.30729.162 |
62,792 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90fra.dll |
9.0.30729.162 |
63,816 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90fra.dll |
9.0.30729.162 |
63,816 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90ita.dll |
9.0.30729.162 |
62,280 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90ita.dll |
9.0.30729.162 |
62,280 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90jpn.dll |
9.0.30729.162 |
44,360 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90jpn.dll |
9.0.30729.162 |
44,360 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90kor.dll |
9.0.30729.162 |
43,848 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90kor.dll |
9.0.30729.162 |
43,848 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90u.dll |
9.0.30729.162 |
5,103,424 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90u.dll |
9.0.30729.162 |
3,781,440 |
14-Oct-2008 |
02:32 |
x86 |
Mfc90ud.dll |
9.0.30729.162 |
7,464,264 |
14-Oct-2008 |
01:12 |
x64 |
Mfc90ud.dll |
9.0.30729.162 |
5,980,488 |
14-Oct-2008 |
02:32 |
x86 |
Mfcm90.dll |
9.0.30729.162 |
67,072 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90.dll |
9.0.30729.162 |
59,904 |
14-Oct-2008 |
00:20 |
x86 |
Mfcm90d.dll |
9.0.30729.162 |
93,184 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90d.dll |
9.0.30729.162 |
80,896 |
14-Oct-2008 |
00:20 |
x86 |
Mfcm90u.dll |
9.0.30729.162 |
67,072 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90u.dll |
9.0.30729.162 |
59,904 |
14-Oct-2008 |
00:20 |
x86 |
Mfcm90ud.dll |
9.0.30729.162 |
93,696 |
14-Oct-2008 |
00:50 |
x64 |
Mfcm90ud.dll |
9.0.30729.162 |
80,896 |
14-Oct-2008 |
00:20 |
x86 |
Mfcmifc80u.dll |
9.0.30729.162 |
14,152 |
20-Oct-2008 |
17:19 |
x86 |
Microsoft.visualc.stlclr.dll |
9.0.30729.162 |
49,000 |
20-Oct-2008 |
17:19 |
x86 |
Msvcm90.dll |
9.0.30729.162 |
225,280 |
13-Oct-2008 |
21:59 |
x86 |
Msvcm90.dll |
9.0.30729.162 |
324,096 |
13-Oct-2008 |
22:36 |
IA-64 |
Msvcm90.dll |
9.0.30729.162 |
245,760 |
13-Oct-2008 |
23:40 |
x64 |
Msvcm90d.dll |
9.0.30729.162 |
312,832 |
13-Oct-2008 |
21:59 |
x86 |
Msvcm90d.dll |
9.0.30729.162 |
429,568 |
13-Oct-2008 |
22:37 |
IA-64 |
Msvcm90d.dll |
9.0.30729.162 |
333,312 |
13-Oct-2008 |
23:40 |
x64 |
Msvcp90.dll |
9.0.30729.162 |
1,467,208 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcp90.dll |
9.0.30729.162 |
854,344 |
14-Oct-2008 |
01:12 |
x64 |
Msvcp90.dll |
9.0.30729.162 |
570,696 |
14-Oct-2008 |
02:32 |
x86 |
Msvcp90d.dll |
9.0.30729.162 |
2,514,760 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcp90d.dll |
9.0.30729.162 |
1,121,608 |
14-Oct-2008 |
01:12 |
x64 |
Msvcp90d.dll |
9.0.30729.162 |
873,288 |
14-Oct-2008 |
02:32 |
x86 |
Msvcr90.dll |
9.0.30729.162 |
1,504,584 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcr90.dll |
9.0.30729.162 |
624,456 |
14-Oct-2008 |
01:12 |
x64 |
Msvcr90.dll |
9.0.30729.162 |
653,640 |
14-Oct-2008 |
02:32 |
x86 |
Msvcr90d.dll |
9.0.30729.162 |
3,599,688 |
14-Oct-2008 |
00:56 |
IA-64 |
Msvcr90d.dll |
9.0.30729.162 |
1,349,960 |
14-Oct-2008 |
01:12 |
x64 |
Msvcr90d.dll |
9.0.30729.162 |
1,178,440 |
14-Oct-2008 |
02:32 |
x86 |
Vcomp90.dll |
9.0.30729.162 |
142,664 |
14-Oct-2008 |
00:56 |
IA-64 |
Vcomp90.dll |
9.0.30729.162 |
57,672 |
14-Oct-2008 |
01:12 |
x64 |
Vcomp90.dll |
9.0.30729.162 |
52,040 |
14-Oct-2008 |
02:32 |
x86 |
Vcomp90d.dll |
9.0.30729.162 |
317,256 |
14-Oct-2008 |
00:56 |
IA-64 |
Vcomp90d.dll |
9.0.30729.162 |
105,800 |
14-Oct-2008 |
01:12 |
x64 |
Vcomp90d.dll |
9.0.30729.162 |
89,416 |
14-Oct-2008 |
02:32 |
x86 |
Vcomp90ui.dll |
9.0.30729.162 |
11,592 |
20-Oct-2008 |
17:19 |
x86 |
Vcredist_ia64.exe |
9.0.30729.162 |
4,712,272 |
14-Oct-2008 |
19:32 |
x86 |
Vcredist_x64.exe |
9.0.30729.162 |
5,236,560 |
14-Oct-2008 |
19:36 |
x86 |
Vcredist_x86.exe |
9.0.30729.162 |
4,496,208 |
14-Oct-2008 |
19:28 |
x86 |
回避策
この問題を回避するには、以下のいずれかの方法を使用します。
-
「現象」に記載されている 4 つ条件のいずれかを変更します。
-
Strncpy関数memcpy関数またはlstrcpyn関数など、類似した機能を備えているその他の関数に置き換えます。
注: これらのコピー機能は、若干異なります。たとえば、 -
関数終わらない文字列コピー null バイトが指定された長さの前に発生したとき。