.NET アプリケーションで GC 中に発生する例外コード 0xc0000409 のエラーについて

こんにちは、Japan Developer Support Core チームの松井です。今回は、.NET アプリケーションでガベージ コレクション (GC) の実行中にランタイムが例外コード 0xc0000409 を通知してアプリケーションが異常終了する事象について、一般的な例をもとにエラーの発生経緯や調査方法についてご紹介します。 1. 0xC0000409 のエラー コードについて0xc0000409 は STATUS_STACK_BUFFER_OVERRUN のエラー コードで、一般的にはシステムやランタイムがスタック領域におけるバッファー オーバーランを検出した状況を示しています。このエラーが発生すると、イベント ログには Application Error のソースで ID 1000 のログが以下のような内容で記録されます。 障害が発生しているアプリケーション名: Consol...

Read more

.NET Framework のプロファイル機能を利用する製品に起因する一般的な問題について

こんにちは、Japan Developer Support Core チームの松井です。今回は、.NET Framework のプロファイル機能を利用する製品に起因する一般的な問題についてご案内します。 .NET Framework のプロファイル機能.NET Framework では、.NET Framework 上で動作するアプリケーションの実行を監視するためのプログラム (プロファイラー) が利用するためのプロファイル API が提供されています。プロファイラーの開発者は、この API を利用してデバッグの支援や各種メトリクスの計測などの様々な機能をプロファイラー DLL として実装します。プロファイル機能を有効にしてプロファイラー DLL が登録されると、.NET Framework アプリケーションは共通言語ランタイムの初期化処理の過程でプロセスにプロファイラー DLL をロード...

Read more

SelectObject 関数利用時の注意事項

こんにちは、Japan Developer Support Core チームです。 今回は、アプリケーションで GDI を利用する際に注意していただきたいことをご案内します。2021 年 3 月 以降の更新プログラムを適用すると GDI 関連の処理が厳格化され、以前動作していた特定のコード(例:プリンターに画像を出力する)が失敗するようになりましたので、以下に該当される場合にはアプリケーションの修正をお願いします。 詳細情報SelectObject 関数で デバイス コンテキスト (Device Context、以下 DC) に デバイス依存ビットマップ (Device-Dependent Bitmap、以下 DDB) を設定する場合は、DCと DDB が適切に対応するよう、デバイスに対応する DC から生成したメモリDCに対し、同様にデバイスに対応する DC を指定して CreateCo...

Read more

.NET Framework 4.5.2、4.6、4.6.1 のサポート終了予定について

こんにちは、Japan Developer Support Core チームです。2022 年 4 月 26 日をもって .NET Framework 4.5.2、4.6、4.6.1 のサポートが終了することとなり、これ以降は、これらのバージョンの .NET Framework に対して、セキュリティ更新を含む修正や、技術サポートは提供されなくなります。これらのバージョンの .NET Framework をご利用のお客様は、お早めに、サポートされた新しいバージョンへの移行をご検討くださいますようお願いいたします。 対象 .NET Framework 4.5.2 .NET Framework 4.6 .NET Framework 4.6.1 ※ ただし、Windows 10 Enterprise LTSC 2015 上でご利用の .NET Framework 4.6 については...

Read more

VS2019 から、Xamarin.UITest で Xamarin.Forms アプリの UI テストをしてみよう!

こんにちは、Japan Developer Support Core チームです。 Xamarin.Forms アプリの User Interface (UI) テストを可能にするフレームワーク、Xamairn.UITest を皆様ご存じでしょうか? Xamarin.UITest Microsoft の Docs サイトや Developer Community サイトでは、よく「Xamarin.UITest クロスプラットフォームのテストプロジェクト」を利用したチュートリアルが紹介されていますね。今日は、必要なライブラリや UI Test の構成の理解を深めるために、この「Xamarin.UITest クロスプラットフォームのテストプロジェクト」を利用せず全て手作りで、Xamarin.UITest を使用した Xamarin.Forms アプリの UI Test にチャレンジ...

Read more

アプリケーションの起動時に自動的にツールをアタッチさせて例外発生時のダンプ ファイルを採取する

こんにちは、Japan Developer Support Core チームの早川です。 アプリケーションが例外によりクラッシュしてしまう問題の調査では、例外発生時のプロセスのダンプ ファイルを採取して解析することが 1 つの有効な手段となります。本ブログでも WER を使って Dump を採取する の記事で、OS に付属の機能である Windows Error Reporting (WER) を利用してクラッシュ時のダンプ ファイルを採取する方法をご紹介していますので是非ご覧ください。 WER は有効な機能ですが、first-chance 例外を検知するものでは無いことから、例えば、アプリケーションが利用しているサードパーティ製のミドルウェアが例外を独自にハンドリングして、プロセスとしては正常に終了させるといった処理を行われているようなケースではご利用いただけません。この他、アプリケーシ...

Read more

ClickOnce 信頼プロンプトで公開元が"不明な公開元です。"として表示される場合の原因と対処方法

こんにちは、Japan Developer Support Core チームの松井です。今回は、ClickOnce アプリケーションのインストール時に表示される信頼プロンプトで、公開元が “不明な公開元” として表示される場合の想定される原因と対処方法をご案内します。 ClickOnce 信頼プロンプトとは信頼プロンプトは、ClickOnce アプリケーションをインストールする際に、アプリケーション名や発信元、公開元などを表示してインストールして問題ないかユーザーに確認を求める次の図ようなダイアログです。 信頼プロンプトの公開元はアプリケーションの署名に基づいて表示されますが、次の図のように “不明な公開元” として表示される場合があります。 不明な公開元として表示される原因と対処方法結論から述べると “不明な公開元” は何らかの理由でアプリケーションの署名の有効性が検証できない場合に...

Read more

Process Monitor ログの採取手順

こんにちは、Japan Developer Support Core チームの松井です。今回は、Process Monitor の概要とログの採取手順をご案内します。Process Monitor は弊社が無償で公開している Sysinternals に含まれるツールの一つです。Process Monitor では、動作しているプロセスによるファイルやレジストリへのアクセス、プロセスやスレッドの起動や終了といったアクティビティについて、記録や解析を行うことが可能です。ファイルやレジストリなどに関する問題を調査するための直接的な手段としてだけでなく、お客様のアプリケーションの動作やプロセス間の関係性を正確に把握して調査方針を検討する目的などでも、情報採取をお願いさせていただく場合があります。 情報採取時の影響について情報採取の実施中はコンピューターの CPU やディスク IO の負荷が高まる...

Read more

シンボル ファイルと Visual Studio のシンボル設定を理解する

こんにちは、Japan Developer Support Core チームの松井です。今回は、シンボル ファイルと Visual Studio のシンボル設定についてご案内します。 シンボル ファイルはアプリケーションをデバッグする上で欠かせないものの一つです。アプリケーションのデバッグは開発時だけでなくリリース後も必要になる可能性があり、またシンボルをロードするにはそのシンボルがモジュールのビルドと同時に生成されたものである必要があるため、リリース用のビルドであってもシンボル ファイルを生成して手元で大切に保管しておかなければなりません。そのため、Visual Studio のコンパイル オプションではシンボル ファイルの生成が既定で有効となっています。 シンボル ファイルがない場合、ユニファイド サポート等で弊社へアプリケーションのデバッグのご支援をご依頼いただいても効果的なご支援が...

Read more

同一ソースコードから生成されるビルド成果物のバイナリ同一性について

こんにちは、Japan Developer Support Core チームの松井です。今回は、Visual Studio に含まれる C++, C#, Visual Basic.NET における、同一ソースコードから生成されるビルド成果物のバイナリ同一性についてご案内します。 はじめに「同一ソースコードをビルドして得られる成果物は、毎回のビルド毎にバイナリ レベルで同一であることが保証されるか?」というご質問は、私たちのサポート チームによくいただくお問い合わせ内容の一つです。同一ソースコードからバイト単位で同一のビルド成果物を得られるようにすることは、決定論的 (deterministic) ビルド、再現可能 (reproducible) ビルドなどとして弊社製品に限らず様々な場所で議論されています。 ご質問の背景は様々ですが、お客様からいただく代表的なものとして以下のような状況が挙げ...

Read more