.Net 4、Windows 2008 R2で実行される混合モードアセンブリアプリケーション(MFC + WinForms)は、常に1つのスレッドで100%CPUを使用します。.Net 4常にStrongNameSignatureVerificationで1つのCPUコアを無駄にする
ProcessExplorerを使用すると、ビジー状態のスレッドで次のスタックが表示されます。 clr.dllを実行している0.01%のCPUを使用している別の10個のスレッドも見ることができます!StrongNameSignatureVerification。
スピンスレッドは、アプリケーションの残りの部分が実行されることを防ぎませんが、CPU時間を無駄にします。
忙しいスレッドのスタックトレースは次のとおりです。
ntoskrnl.exe!IoAcquireRemoveLockEx+0xe7
ntoskrnl.exe!memset+0x22a
ntoskrnl.exe!KeWaitForSingleObject+0x2cb
ntoskrnl.exe!KeDetachProcess+0x120d
ntoskrnl.exe!PsReturnProcessNonPagedPoolQuota+0x3a3
ntoskrnl.exe!CcSetDirtyPinnedData+0x433
mscorlib.ni.dll+0x2b066a
mscorlib.ni.dll+0x2317ac
mscorlib.ni.dll+0x2b066a
mscorlib.ni.dll+0x2317ac
mscorlib.ni.dll+0x26ccf7
mscorlib.ni.dll+0x237fc4
mscorlib.ni.dll+0x26cc3c
clr.dll+0x21bb
clr.dll!CoUninitializeEE+0xee9b
clr.dll!CoUninitializeEE+0x11463
clr.dll!CoUninitializeEE+0x114dc
clr.dll!CoUninitializeEE+0x1154b
clr.dll!StrongNameErrorInfo+0xa638
clr.dll!StrongNameSignatureVerification+0x144fb
clr.dll!StrongNameSignatureVerification+0x1457d
clr.dll!StrongNameSignatureVerification+0x14638
clr.dll!StrongNameSignatureVerification+0x146d2
clr.dll!StrongNameErrorInfo+0x9977
clr.dll!StrongNameErrorInfo+0xa5bc
clr.dll!StrongNameErrorInfo+0xa553
clr.dll!StrongNameErrorInfo+0xa517
clr.dll!StrongNameErrorInfo+0xa151
clr.dll!StrongNameErrorInfo+0x9501
clr.dll!StrongNameErrorInfo+0xad67
clr.dll!StrongNameSignatureVerification+0x164d9
ntdll.dll!RtlCreateUserProcess+0x8c
ntdll.dll!RtlCreateProcessParameters+0x4e
私は見つけることができました唯一の同様のアカウントは、この質問である:clr.sll!StrongNameSignatureVerification CPU consumptionスレッドは冷たい行っているようだけれども。
私たちはアセンブリに署名しておらず、信頼する意思がありますが、厳密な名前検証を完全に無効にする方法はありますか?
これをご覧ください。 http://msdn.microsoft.com/en-us/library/cc713694.aspx –
@SimonMourier - はい、私の理解から、これにより、バイパスが無効になり、すべてのアセンブリが厳密な名前の署名検証の対象になる私が後にしているものとは反対のものです。 – chillitom
ああ、申し訳ありませんが、あなたは正しいです。これについてはどうすればよいですか:http://www.ryangerard.net/post/8768827919/assembly-verification-skipping-on-win7-64bitおよび –