M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

イベントログ1530直後に実行中の複数CLRプロセスでエラー発生

直近、仕事で保守しているバッチシステムで、同時に実行されていた複数の.exeがある時間帯─数十秒間にほぼ同時にエラーとなるという事象が発生しました。

標準エラー出力やエラーログに出力された内容は.exeにより様々で「インターフェイスがサポートされていません」や「タイプ初期化子が例外をスローしました」、そして単に「○○でエラーが発生しました」的な素朴で役立たずなものもありました。

一方、後述のようにイベントビューアを確認すると、事象発生直前にイベントログ1530が記録されていました。

コンテキスト

OS Windows Server 2008 R2
ランタイム .NET Framework 4.5.2
実装言語 C#
エラーメッセージ インターフェイスがサポートされていません」、「タイプ初期化子が例外をスローしました」など

インターフェイスがサポートされていません」は.exeが参照していたCOMの1つをロードする過程で発生しているようでした。「タイプ初期化子が例外をスローしました」は(別の).exeが稼働するCLRにODP.NETのクラスがロードされたとき、タイプ初期化子(=静的コンストラクタ)の実行中に意図せぬ例外に見舞われて発生したようです。

しかし前後の時間に実行されていた.exeでは事象は発生しておらず、現に今回異常終了した.exeにしても再実行したところ正常稼動しました。当該時間帯に人為的にシステム変更がなされていた痕跡もありません。

イベントログ

一方、OSのイベントログを参照すると事象発生の直前にこちらの記事で言及されているイベントログ1530が発生していました。

レジストリ ファイルは他のアプリケーションまたはサービスで使用されています。ファイルはすぐにアンロードされます。レジストリ ファイルを保持しているアプリケーションまたはサービスはこれ以降正しく機能しない可能性があります

というメッセージに続いて、この警告内容に該当するプロセスがずらりと一覧されており、前述のエラーを起こした.exeのプロセスはすべてここに含まれていました。

Microsoft TechNetの記事の説明には次のようにありますが:

This event can be caused by apps that do not release their Registry keys before shutting down. This most often occurs when an app runs in the background and does not release its Registry keys when a user signs off, in which case Windows forces the Registry to unload. There is no impact to users, though in rare cases recent configuration changes in the app might not be saved.
このイベントはシャットダウンのまえにレジストリ・キーを解放していないアプリケーションにより引き起こされる可能性があります。バックグラウンドで何かしらアプリケーションが実行されていて、ユーザのサインオフ〔に伴う当該アプリケーションのシャットダウン?〕に際してレジストリー・キーが解放されない場合にはたいがい発生するイベントです。このような場合、Windows OSが強制的にレジストリーをアンロードさせます。ユーザへの影響はありません。稀ではありますが、アプリケーションが行った直近の設定情報〔レジストリーに保存される設定情報?〕の変更が保存されないままとなることがあります。

今回の事象からすればこの説明にあるようなアプリケーション起点の問題ではないように思われます。時系列でいえば、このイベントログが出力された直後から数十秒間に.exeのエラーが発生しています。上記説明にあるサインオフ云々にしても、当該バッチシステムはJP1/AJS2 Agentサービスにより実行されており、ユーザのサインオン/サインオフとは無関係であるはず。

あるいは逆に、というかそもそも、このイベントログと事象とは何の関係もないのでしょうか。それにしてはタイミングがぴったりすぎで、メッセージ内容には直後にエラーになった.exeがずらりと並んでいるのですから、ひとまず関係ありと仮定するのが妥当なように思われます。

とはいえ、Google先生にあれこれ伺ってみても類似事象に関する返答を拝聴することはできませんでした。Microsoft社のサポート問合せで何かわかるとよいのですが。。