.Net 4, Windows 2008 R2에서 실행되는 혼합 모드 어셈블리 응용 프로그램 (MFC + WinForms)은 한 스레드에서 100 % cpu를 사용합니다..Net 4 지속적으로 StrongNameSignatureVerification에서 하나의 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 및 –