を起動するWindowsサービスがありThread
ます。サービスはで始まりSYSTEM ACCOUNT
ます。
スレッド内ではCoInitialize
、COMオブジェクトによって管理されるXMLオブジェクトがあるため、を使用します。
一部のウィンドウ(7、2008 std、すべてではありません)では、私のサービスは理由なしにメモリを継続的に割り当てるようになります(12mb-> 50mb-> 100mb-> 500mb ....)。
サービスのログオンユーザーを管理者ユーザーに変更すると、問題は停止します。何が起こっているのか理解できません!
Process Explorer(Microsoft sysinternals)を使用して、 (カーネル)WaitForMultipleObjects
の呼び出しが原因で一部のスレッドがフリーズしていることを確認できました。DecodePointer
スタックは次のとおりです。
Start address: ntdll.dll!RtlDecodePointer+0x32a
ntkrnlpa.exe!KeWaitForMultipleObjects+0xab7
ntkrnlpa.exe!KeWaitForSingleObject+0x492
ntkrnlpa.exe!PsGetCurrentThreadTeb+0x377
ntkrnlpa.exe!KiCheckForKernelApcDelivery+0x24
ntkrnlpa.exe!IofCallDriver+0x64
ntkrnlpa.exe!NtQueryInformationProcess+0x1c63
ntkrnlpa.exe!NtQueryDirectoryFile+0x5b
ntkrnlpa.exe!ZwQueryLicenseValue+0xbc6
ntkrnlpa.exe!ZwQueryDirectoryFile+0x11
fltmgr.sys!FltGetVolumeName+0xd9
fltmgr.sys!FltCheckAndGrowNameControl+0x36a
fltmgr.sys!FltGetTunneledName+0xb81
fltmgr.sys!FltGetDestinationFileNameInformation+0x245
fltmgr.sys!FltReleaseFileNameInformation+0x871
fltmgr.sys!FltIsDirectory+0x58b
fltmgr.sys!FltGetFileNameInformation+0x120
fltmgr.sys!FltRequestOperationStatusCallback+0x635
fltmgr.sys!FltGetIrpName+0x80c
fltmgr.sys!FltGetIrpName+0xd42
fltmgr.sys!FltGetIrpName+0x13b3
fltmgr.sys!FltDeletePushLock+0x1db7
ntkrnlpa.exe!IofCallDriver+0x64
ntkrnlpa.exe!RtlUpcaseUnicodeChar+0x17e7
ntkrnlpa.exe!ObReferenceObjectByHandle+0x976
ntkrnlpa.exe!ObOpenObjectByName+0x13c
ntkrnlpa.exe!RtlUpcaseUnicodeChar+0x6c9
ntkrnlpa.exe!NtCreateFile+0x34
ntkrnlpa.exe!ZwQueryLicenseValue+0xbc6
ntdll.dll!KiFastSystemCallRet
shell32.dll!SHLoadInProc+0x7f3de
shell32.dll!SHLoadInProc+0x7f42c
shell32.dll!SHLoadInProc+0x7f7b5
shell32.dll!SHLoadInProc+0x7f8a5
shell32.dll!SHLoadInProc+0x37487
ntdll.dll!TpSetWait+0x149
ntdll.dll!RtlDecodePointer+0x32a
kernel32.dll!BaseThreadInitThunk+0x12
ntdll.dll!RtlInitializeExceptionChain+0x63
ntdll.dll!RtlInitializeExceptionChain+0x36