サポートアドバイザリ 49138:非同期メソッドをインストルメントすると System.Runtime.InteropServices.SEHException が発生する
このドキュメントでは、AppDynamics 製品のサポートアドバイザリについて説明します。
概要
影響を受けるソフトウェア
| 製品:、 | コンポーネント | Version |
|---|---|---|
| AppDynamics .NET APM | .NETエージェント | 4.1.3 より前の 4.1 バージョン |
影響
アプリケーション例外:概要で説明されているメソッドのインストルメンテーションは SEHException を発生させます。
例
// An async method called inside of a generic class will trigger the exception.
class GenericClass<T>
{
async Task AsyncMethod()
{
//Do work...
}
}
// An async method called inside of a generic method will also trigger the exception.
class MyClass
{
public async void MyMethod<T>(T input)
{
await AsyncMethod();
}
}
回避策
- エージェントのバージョン 4.1.0 ~ 4.1.2 を実行しているお客様には、4.1.3 以降にアップグレードすることをお勧めします。
- .NET エージェント構成ファイルを編集して、AsyncStateMachineInstrumentor を無効化します(次の手順を参照)。
- Windows のバージョンに応じて、次のファイルを開きます。
- Windowsサーバー2008以降:
%ProgramData%\AppDynamics\DotNetAgent\Config\config.xml - Windows Server 2003:
%AllUsersProfile%\Application Data\AppDynamics\DotNetAgent\Config\config.xml
- Windowsサーバー2008以降:
-
<machine-agent> ノードを置き換えるか更新して、次を含めるようにします。
<machine-agent> <instrumentation> <instrumentor name="AsyncStateMachineInstrumentor" enabled="false" /> </instrumentation> </machine-agent> - AppDynamics.Agent.Coordinator サービス、およびインストルメント化対象となっているすべてのプロセスを再起動します。