静的に確保するメモリ サイズが大きいアプリケーションの実行時のエラーについて

こんにちは、Visual Studio サポート チームです。 今回は、巨大なサイズのメモリを静的に確保するようなアプリケーションを実行した場合に発生するエラーについてご案内します。エラー自体は Windows OS の想定された動作に基づくものですが、Visual C++ でのビルド時に予め問題を検出できないケースもあり、注意が必要となります。    OS によるフォーマット チェックで検出されるエラーについて Windows OS では、アプリケーションを起動する際、事前に対象ファイルのフォーマットのチェックを行い、静的に確保されているメモリのサイズが大きすぎる場合に、アプリケーションの実行を制限します。 このサイズの上限は、後述の Visual C++ のリンカーが制限している 2GB とは完全に一致しておらず、アプリケーションのビルド時にエラーが検出されなかった場合でも、アプリケーションを実行できない場合があるのでご注意ください。 Windows OS によってアプリケーション実行時に検知されたエラーは STATUS_INVALID_IMAGE_FORMAT (0xC000007B) エラーとして OS 内部で通知され、以下のように「有効な Win32 アプリケーションではない」または「このアプリはお使いの PC では実行できません」といったエラー メッセージが表示されます。 Windows 7の場合 Windows 8 や Windows 8.1 の場合   サンプル コード 以下の Visual C++ コードを Visual Studio でコンパイルして実行することで、上記エラーを確認することができます。 #include<stdio.h>…


2013年10月 7日以降 に発生する可能性のあるVisual Studio 2012 のインストール時の問題

  こんにちは、Visual Studio サポート チームです。 今回の記事は、2013年10月 7日以降 に発生する可能性のある、Visual Studio 2012 のインストール時の警告についてご案内いたします。 この問題は、以前の Visual Studio 2012 のインストーラーに問題があるため発生するエラーとなります。 以前の Visual Studio 2012のインストール パッケージで2013年10月 7日以降に製品をインストール実行した場合、「パッケージソースが見つかりません」というエラーが発生する場合があります。 または、インストールが完了した後に、次の警告が表示される場合があります。   —————————- Microsoft Web Deploy 3.0 現在のシステム時計または署名ファイルのタイムスタンプで確認すると、必要な証明書の有効期間が過ぎています。 —————————-   この現象は、以前に MSDN サブスクライバー ダウンロードでインストール イメージを入手した場合か、パッケージ版で製品を購入した場合で、これらのインストール イメージで 2013年 10月 7日以降に、新規で製品をインストールする場合や、インストール後にVisual Studio 2012 Updateを適用していない場合に発生する可能性があります。   この問題の回避策は以下のいずれかとなります。   – MSDN サブスクライバー ダウンロードから現在の最新のイメージをダウンロードし、インストールします – 既存のパッケージでインストール自体が完了する場合には、以下から Visual Studio…


Visual Studio 2012 で「プログラム互換性アシスタント」ダイアログが表示される

  こんにちは。Visual Studio サポート チームです。 Windows Update を適用しているにもかかわらず、Visual Studio 2012 起動時に、以下のような「プログラム互換性アシスタント」ダイアログが表示されることがあります。         原因について 本現象は、Windows Update から配信される .NET Framework 4.5 ランタイムの更新に対応する Visual Studio の更新が適用されていない状態で、Visual Studio を起動した際に発生する問題です。 Windows Update を適用すると .NET Framework 4.5 ランタイムなど、Windows Update での更新の配信対象となるモジュールは、最新の状態になります。 しかし、Visual Studio 製品に関しては、対応する更新プログラムの配信方法が Windows Update ではなく、Visual Studio 製品として別途配信されます。 そのため、Windows Update で .NET Framework ランタイムに更新が適用された環境で Visual Studio 2012 を起動する際に、.NET…


ClickOnce カスタム ログの設定について

こんにちは!日本マイクロソフトのオオカワです。 本日は、ClickOnce 起動時のトラブルシュートに有用な、カスタム ログの設定方法についてご紹介しようと思います。 対象とするシナリオ 以下のようなシナリオで、当該ログを有効化していただくと、エラーの調査に当たり有用なログとなるかと存じます。 ClickOnce アプリケーションを起動するときに、不定期にエラーが発生する状況がエンドユーザー様環境で発生しており、現象発生時のログの取得が困難 万が一エラーが発生した時のログを確実に保全しておきたい 設定方法 ログを有効化する環境でレジストリ エディタ (regedit.exe) を起動いただき、以下の手順でログを有効化ください。 Regedit.exe を起動します。 HKCU\Software\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment ノードまで移動します。 LogFilePath 文字列値を、使用するカスタム ログの場所の完全パスとファイル名に設定します。 この場所は、ユーザーが書き込みアクセス権を持つディレクトリ内であることが必要です。たとえば、Windows Vista では、次のフォルダー構造を作成し、LogFilePath を C:\Users\<ユーザー名>\Documents\Logs\ClickOnce\installation.log に設定します。 注意事項 レジストリ エディタの誤った使用は、システム全般に渡る重大な問題を引き起こす可能性があります。 弊社では、レジストリ エディタを使用することによって引き起こされた障害の解決については、一切保証しておりません。 レジストリ エディタを使用する場合には、お客様の責任において、十分にご注意の上でご利用ください。 参考記事 方法 : ClickOnce 配置エラー用にカスタム ログ ファイルの場所を設定する http://msdn.microsoft.com/ja-jp/library/ms404265.aspx


[迅速なお困りごと解決のために] 開発した .NET アプリケーションが異常終了して、その際イベントログに ID 1000 もしくは ID 1023 のイベントが表示されている場合の初期調査

初めまして、Visual Studio サポートチーム トミタです! ブログでも、普段のサポート同様、有用な情報をお客様にご提供できればと思いますので、どうぞよろしくお願いします! 私達サポートチームではいろいろなお問い合わせをお受けし対応していますが、お問い合わせいただいた際のお問い合わせの種類によっては、調査前の切り分けとして、事前にご確認いただくことや、ご理解いただきたいことがある場合もございます。 そこで、今後、このブログを通じて、お客様側で問題が起きた際の切り分けの方法や、事前の情報採取手法などをご紹介したいと考えています。 事前に現象の切り分けを実施いただくことで、サポートサービスをご利用いただく際も、より効率的に利用いただけると思っています。 これらの情報を、今後「迅速なお困りごと解決のために」シリーズとして、順次公開させていただければと思います。 サポートエンジニアならではのコンテンツ、どうぞご期待ください! さて、記念すべき第一回は、「開発した .NET アプリケーションが異常終了して、その際イベントログに ID 1000 もしくは ID 1023 のイベントが表示されている」という事象を確認された場合の切り分け方法についてお伝えしたいと思います。 [現象] .NET Framework 上で動作しているアプリケーションが異常終了する際、イベント ID 1000 もしくはイベント ID 1023 のエラーが出力され、.NET Framework のコンポーネントにてエラーが発生していると通知される。 -例 [原因] イベントログに出力される ID 1000 もしくは ID 1023 のエラーは、.NET アプリケーションで、try-catch 節などで捕捉されない例外やエラーが発生した場合に記録されます。可能性は以下の通りです。 例外が発生しているが、エラーハンドルされず、異常終了した場合 アプリケーション内で Windows API などのネイティブ API を使用しており、.NET Framework が管理できないメモリ領域で不正なメモリアクセス エラーが発生した場合 .NETランタイム内部で問題発生し、内部のデータ不整合でそれ以上の継続動作が難しい場合 このような場合には、イベントログには上記例のような「致命的な実行エンジンエラー (Fatal…