slow startup time on server because of many HKCR lookups
Posted: Wed 23 Nov, 2016 11:19
On one Server 2008 machine, I installed the latest stable Far30b4774.x64.20160902.msi.
Here, Far takes an unusually long time to start up (3 seconds), every time. Process Monitor shows that it loads its db files for 400ms, then proceeds to hammer HKCR\CLSID, HKCU\Software\Classes\CLSID and HKCR\Interface for 2500ms.
After downloading the pdb, the Stack view shows the following stack trace:
The windows dlls are either stripped or unavailable, so the names there cannot be trusted. But at least I know that the corresponding line is:
On my win7 pc it only scans 1-2 subtrees of CLSID and takes only 1ms to complete.
Here, Far takes an unusually long time to start up (3 seconds), every time. Process Monitor shows that it loads its db files for 400ms, then proceeds to hammer HKCR\CLSID, HKCU\Software\Classes\CLSID and HKCR\Interface for 2500ms.
After downloading the pdb, the Stack view shows the following stack trace:
Code: Select all
...
13 shdocvw.dll Ordinal153 + 0x2a3d
...
16 ntdll.dll LdrLoadDll + 0x15e
17 kernel32.dll FindResourceExW + 0x151
...
34 ole32.dll CoCreateInstance + 0x17b
35 Far.exe taskbar::taskbar + 0x50, c:\src\unicode_far\taskbar.cpp(48)
36 Far.exe Taskbar + 0x46, c:\src\unicode_far\taskbar.cpp(41)
37 Far.exe PluginManager::LoadPlugins + 0x49, c:\src\unicode_far\plugins.cpp(393)
38 Far.exe ControlObject::Init + 0x19c, c:\src\unicode_far\ctrlobj.cpp(92)
39 Far.exe MainProcess + 0x2c1, c:\src\unicode_far\main.cpp(219)
40 Far.exe mainImpl + 0x1183, c:\src\unicode_far\main.cpp(767)
41 Far.exe wmain_seh + 0xa0, c:\src\unicode_far\main.cpp(797)
Code: Select all
CoCreateInstance(CLSID_TaskbarList, nullptr, CLSCTX_INPROC_SERVER, IID_ITaskbarList3, IID_PPV_ARGS_Helper(&ptr_setter(mTaskbarList)));