Hello,
Directory Opus is absolutely thrashing my CPU whenever i go to install just about anything on a freshly installed Windows 8. Quite literally anything that i've installed has made Directory Opus use up to 75% CPU while it has been installing. Adobe, Corel, Microsoft, anything at all from anyone. This is on an i7-2600K @ 3.8GHz too, so we're looking at up to 6 maxxed out fast cores.
I've had a look at the call stack of various threads during these CPU spikes (using "Process Hacker" which is a "Process Explorer" clone) and i can see no strange .dlls and what not. It's all shell32.dll, user32.dll, dopuslib, and dopus.exe, etc. Nothing but the core Microsoft and Directory Opus DLLs/modules/EXEs.
I used ShellExView to disable everything that was not Microsoft, even GPSoftware extensions. I also killed/restarted explorer.exe and restarted Directory Opus to make sure there was no lingering hooks or extensions etc.
Still the same ridiculous CPU usage.
The only thing that seems to make Directory Opus use less CPU is closing listers. At around only 3 listers, i get around 20% CPU maximum used by Directory Opus. But what's the point of that? Directory Opus is for power users. I want to have 10+ listers open!
Here's some call stacks during the high CPU usage:
0, ntdll.dll!NtNotifyChangeDirectoryFile+0xa
1, KernelBase.dll!ReadDirectoryChangesW+0xa9
2, kernel32.dll!ReadDirectoryChangesW+0x36
3, dopus.exe+0x550e87
4, dopus.exe+0x552345
5, user32.dll!DispatchMessageW+0x1fe
6, user32.dll!MsgWaitForMultipleObjectsEx+0x237
7, dopus.exe+0x54ffbb
8, dopuslib.dll!IsWow64+0x31
9, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
10, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
11, kernel32.dll!BaseThreadInitThunk+0x1a
12, ntdll.dll!RtlUserThreadStart+0x21
0, user32.dll!TranslateMessage+0x4a
1, user32.dll!TranslateMessage+0x90
2, user32.dll!PeekMessageW+0x85
3, dopus.exe+0x54ffab
4, dopuslib.dll!IsWow64+0x31
5, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
6, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
7, kernel32.dll!BaseThreadInitThunk+0x1a
8, ntdll.dll!RtlUserThreadStart+0x21
0, ntdll.dll!NtWaitForSingleObject+0xa
1, KernelBase.dll!WaitForSingleObjectEx+0x9a
2, dopus.exe+0x4673b9
3, dopus.exe+0x550159
4, ntdll.dll!KiUserApcDispatcher+0x2b
5, ntdll.dll!ZwWaitForMultipleObjects+0xa
6, KernelBase.dll!GetProcessHeap+0x56
7, user32.dll!WaitMessage+0x2e3
8, dopus.exe+0x550005
9, dopuslib.dll!IsWow64+0x31
10, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
11, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
12, kernel32.dll!BaseThreadInitThunk+0x1a
13, ntdll.dll!RtlUserThreadStart+0x21
0, ntdll.dll!NtWaitForSingleObject+0xa
1, KernelBase.dll!WaitForSingleObjectEx+0x9a
2, dopus.exe+0x4673b9
3, dopus.exe+0x5522e6
4, user32.dll!DispatchMessageW+0x1fe
5, user32.dll!MsgWaitForMultipleObjectsEx+0x237
6, dopus.exe+0x54ffbb
7, dopuslib.dll!IsWow64+0x31
8, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
9, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
10, kernel32.dll!BaseThreadInitThunk+0x1a
11, ntdll.dll!RtlUserThreadStart+0x21
0, ntdll.dll!ZwWaitForMultipleObjects+0xa
1, KernelBase.dll!GetProcessHeap+0x56
2, user32.dll!WaitMessage+0x2e3
3, dopus.exe+0x550005
4, dopuslib.dll!IsWow64+0x31
5, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
6, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
7, kernel32.dll!BaseThreadInitThunk+0x1a
8, ntdll.dll!RtlUserThreadStart+0x21
0, ntdll.dll!NtNotifyChangeDirectoryFile+0xa
1, KernelBase.dll!ReadDirectoryChangesW+0xa9
2, kernel32.dll!ReadDirectoryChangesW+0x36
3, dopus.exe+0x550e87
4, dopus.exe+0x552345
5, user32.dll!DispatchMessageW+0x1fe
6, user32.dll!MsgWaitForMultipleObjectsEx+0x237
7, dopus.exe+0x54ffbb
8, dopuslib.dll!IsWow64+0x31
9, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
10, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
11, kernel32.dll!BaseThreadInitThunk+0x1a
12, ntdll.dll!RtlUserThreadStart+0x21
0, ntoskrnl.exe!SeAccessCheck+0x1ef
1, ntoskrnl.exe!KeDelayExecutionThread+0xc32
2, ntoskrnl.exe!KeWaitForSingleObject+0x1cf
3, ntoskrnl.exe!_misaligned_access+0x809
4, ntoskrnl.exe!SeAccessCheck+0x280
5, ntoskrnl.exe!KeDelayExecutionThread+0xc32
6, ntoskrnl.exe!KeWaitForMultipleObjects+0x25d
7, ntoskrnl.exe!ObWaitForMultipleObjects+0x29c
8, ntoskrnl.exe!ObWaitForMultipleObjects+0x713
9, ntoskrnl.exe!KeSaveStateForHibernate+0x2a33
10, ntdll.dll!ZwWaitForMultipleObjects+0xa
11, KernelBase.dll!GetProcessHeap+0x56
12, user32.dll!WaitMessage+0x2e3
13, dopus.exe+0x550005
14, dopuslib.dll!IsWow64+0x31
15, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
16, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
17, kernel32.dll!BaseThreadInitThunk+0x1a
18, ntdll.dll!RtlUserThreadStart+0x21
0, ntoskrnl.exe!SeAccessCheck+0x1ef
1, ntoskrnl.exe!KeDelayExecutionThread+0xc32
2, ntoskrnl.exe!KeWaitForSingleObject+0x1cf
3, ntoskrnl.exe!_misaligned_access+0x809
4, ntoskrnl.exe!SeAccessCheck+0x280
5, ntoskrnl.exe!KiCheckForKernelApcDelivery+0x23
6, win32k.sys!EngCopyBits+0x1e209
7, ntoskrnl.exe!KeSaveStateForHibernate+0x2a33
8, user32.dll!Ordinal2427+0x100a
9, user32.dll!WaitMessage+0x282
10, dopus.exe+0x550005
11, dopuslib.dll!IsWow64+0x31
12, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
13, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
14, kernel32.dll!BaseThreadInitThunk+0x1a
15, ntdll.dll!RtlUserThreadStart+0x21
0, ntoskrnl.exe!SeAccessCheck+0x1ef
1, ntoskrnl.exe!KeDelayExecutionThread+0xc32
2, ntoskrnl.exe!KeWaitForSingleObject+0x1cf
3, ntoskrnl.exe!_misaligned_access+0x809
4, ntoskrnl.exe!SeAccessCheck+0x280
5, ntoskrnl.exe!KiCheckForKernelApcDelivery+0x23
6, Ntfs.sys+0xdb877
7, fltmgr.sys!FltReleaseContext+0x90e
8, fltmgr.sys+0x10b6
9, ntoskrnl.exe!ObWaitForMultipleObjects+0x8a8
10, ntoskrnl.exe!NtNotifyChangeDirectoryFile+0x2b5
11, ntoskrnl.exe!KeSaveStateForHibernate+0x2a33
12, ntdll.dll!NtNotifyChangeDirectoryFile+0xa
13, KernelBase.dll!ReadDirectoryChangesW+0xa9
14, kernel32.dll!ReadDirectoryChangesW+0x36
15, dopus.exe+0x550e87
16, dopus.exe+0x552345
17, user32.dll!DispatchMessageW+0x1fe
18, user32.dll!MsgWaitForMultipleObjectsEx+0x237
19, dopus.exe+0x54ffbb
20, dopuslib.dll!IsWow64+0x31
21, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
22, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
23, kernel32.dll!BaseThreadInitThunk+0x1a
24, ntdll.dll!RtlUserThreadStart+0x21
This is happening with Directory Opus 10.0.2.0 and 10.0.2.1. Windows 8, and Windows 7.
This forum post has actually been a few days in the working. I've gone back to Windows 7 now and although the CPU usage isn't as high, Directory Opus is still opening up about 10-15 threads that are each using 2.5% CPU. Directory Opus is unresponsive during this. (ie: I could not alt-tab to it) I wasn't even using Directory Opus at the time for anything. I was just extracting about 145 rar files with WinRAR which contain about 3.8GB of data and 17,077 files.
It seems as though Directory Opus is hooking into something or monitoring something to do with every single file operation on the computer, and taking a hell of a long time to update the GUI or its internal structures or whatever.
I'm at a loss what to do. The only thing i can think of is to go back to previous versions of Directory Opus and check if the same CPU usage occurs. This seems to be a relatively new problem. I don't recall having such high CPU usage in the past.
Some sample call stacks on high CPU usage threads for the Windows 7 WinRAR issue are:
0, ntoskrnl.exe!_misaligned_access+0x17e7
1, ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d
2, ntoskrnl.exe!KeWaitForMutexObject+0x19f
3, ntoskrnl.exe!_misaligned_access+0xba4
4, ntoskrnl.exe!_misaligned_access+0x1821
5, ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d
6, ntoskrnl.exe!KeWaitForMutexObject+0x19f
7, ntoskrnl.exe!NtWaitForSingleObject+0xde
8, ntoskrnl.exe!KeSynchronizeExecution+0x3a23
9, ntdll.dll!NtWaitForSingleObject+0xa
10, ntdll.dll!RtlDeNormalizeProcessParams+0x5d8
11, ntdll.dll!RtlDeNormalizeProcessParams+0x4cb
12, shell32.dll!SHCreateDirectoryExW+0xa3b
13, shell32.dll!SHChangeNotifyDeregister+0xb34
14, shell32.dll!Ordinal893+0x8cc2
15, shell32.dll!SHBindToParent+0xeb0
16, dopus.exe+0x34e8c7
17, dopus.exe+0x348712
18, dopus.exe+0x539f19
19, dopus.exe+0x5295c1
20, dopus.exe+0x534134
21, user32.dll!TranslateMessageEx+0x2a1
22, user32.dll!SetTimer+0x178
23, user32.dll!SendMessageW+0x5d
24, dopus.exe+0x5c31b3
25, dopus.exe+0x59b722
26, dopus.exe+0x5d46f6
27, user32.dll!TranslateMessageEx+0x2a1
28, user32.dll!CallWindowProcW+0x9c
29, user32.dll!CallWindowProcW+0x18
30, comctl32.dll!CreateUpDownControl+0x254d
31, comctl32.dll!DefSubclassProc+0x2b4
32, comctl32.dll!DefSubclassProc+0x7c
33, dopus.exe+0x3eb52
34, dopus.exe+0xc343b
35, comctl32.dll!DefSubclassProc+0x2b4
36, comctl32.dll!DefSubclassProc+0x7c
37, dopus.exe+0x393380
38, comctl32.dll!DefSubclassProc+0x2b4
39, comctl32.dll!DefSubclassProc+0x18b
40, user32.dll!TranslateMessageEx+0x2a1
41, user32.dll!TranslateMessage+0x1ea
42, dopus.exe+0x5da447
43, dopuslib.dll!IsWow64+0x31
44, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
45, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
46, kernel32.dll!BaseThreadInitThunk+0xd
47, ntdll.dll!RtlUserThreadStart+0x21
0, ntoskrnl.exe!_misaligned_access+0x17e7
1, ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d
2, ntoskrnl.exe!KeWaitForMutexObject+0x19f
3, ntoskrnl.exe!_misaligned_access+0xba4
4, ntoskrnl.exe!_misaligned_access+0x1821
5, ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d
6, ntoskrnl.exe!KeWaitForMutexObject+0x19f
7, ntoskrnl.exe!NtWaitForSingleObject+0xde
8, ntoskrnl.exe!KeSynchronizeExecution+0x3a23
9, ntdll.dll!NtWaitForSingleObject+0xa
10, ntdll.dll!RtlDeNormalizeProcessParams+0x5d8
11, ntdll.dll!RtlDeNormalizeProcessParams+0x4cb
12, shell32.dll!SHCreateDirectoryExW+0xa3b
13, shell32.dll!SHChangeNotifyDeregister+0xb34
14, shell32.dll!Ordinal874+0x5fea
15, shell32.dll!Ordinal733+0x251b1
16, shell32.dll!Ordinal99+0x4967
17, shell32.dll!Ordinal733+0x24676
18, shell32.dll!SHBindToParent+0xeb0
19, dopus.exe+0x34e8c7
20, dopus.exe+0x348712
21, dopus.exe+0x539f19
22, dopus.exe+0x5295c1
23, dopus.exe+0x534134
24, user32.dll!TranslateMessageEx+0x2a1
25, user32.dll!SetTimer+0x178
26, user32.dll!SendMessageW+0x5d
27, dopus.exe+0x5c31b3
28, dopus.exe+0x59b722
29, dopus.exe+0x5d46f6
30, user32.dll!TranslateMessageEx+0x2a1
31, user32.dll!CallWindowProcW+0x9c
32, user32.dll!CallWindowProcW+0x18
33, comctl32.dll!CreateUpDownControl+0x254d
34, comctl32.dll!DefSubclassProc+0x2b4
35, comctl32.dll!DefSubclassProc+0x7c
36, dopus.exe+0x3eb52
37, dopus.exe+0xc343b
38, comctl32.dll!DefSubclassProc+0x2b4
39, comctl32.dll!DefSubclassProc+0x7c
40, dopus.exe+0x393380
41, comctl32.dll!DefSubclassProc+0x2b4
42, comctl32.dll!DefSubclassProc+0x18b
43, user32.dll!TranslateMessageEx+0x2a1
44, user32.dll!TranslateMessage+0x1ea
45, dopus.exe+0x5da447
46, dopuslib.dll!IsWow64+0x31
47, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
48, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
49, kernel32.dll!BaseThreadInitThunk+0xd
50, ntdll.dll!RtlUserThreadStart+0x21
0, ntoskrnl.exe!_misaligned_access+0x17e7
1, ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d
2, ntoskrnl.exe!KeWaitForMutexObject+0x19f
3, ntoskrnl.exe!_misaligned_access+0xba4
4, ntoskrnl.exe!_misaligned_access+0x1821
5, ntoskrnl.exe!KiCheckForKernelApcDelivery+0x25
6, Ntfs.sys+0xadae3
7, FLTMGR.SYS!FltIsCallbackDataDirty+0x2df
8, FLTMGR.SYS+0x16df
9, ntoskrnl.exe!MmCreateSection+0xb32f
10, ntoskrnl.exe!NtWaitForSingleObject+0xe14
11, ntoskrnl.exe!NtWaitForSingleObject+0xbd1
12, ntoskrnl.exe!NtWaitForSingleObject+0x1194
13, ntoskrnl.exe!KeSynchronizeExecution+0x3a23
14, ntdll.dll!ZwClose+0xa
15, KernelBase.dll!CloseHandle+0x13
16, kernel32.dll!CloseHandle+0x41
17, shell32.dll!SHCLSIDFromString+0x1b09
18, shell32.dll!SHCreateShellItemArrayFromIDLists+0x1703
19, shell32.dll!SHCreateShellItemArrayFromIDLists+0x1554
20, shell32.dll!SHCLSIDFromString+0x1878
21, shell32.dll!SHCLSIDFromString+0x192e
22, shell32.dll!SHCLSIDFromString+0x192e
23, shell32.dll!SHCLSIDFromString+0x192e
24, shell32.dll!SHCLSIDFromString+0x44f
25, shell32.dll!SHGetFolderPathW+0x954
26, shell32.dll!SHParseDisplayName+0x25e
27, shell32.dll!SHGetFolderPathW+0x954
28, dopus.exe+0x485047
29, dopus.exe!DummyExeFunction2ToAvoidSymbolConfusion+0x63ab1
30, dopus.exe!DummyExeFunction2ToAvoidSymbolConfusion+0x638e6
31, dopus.exe+0x347c00
32, dopus.exe+0x539f19
33, dopus.exe+0x5295c1
34, dopus.exe+0x534134
35, user32.dll!TranslateMessageEx+0x2a1
36, user32.dll!SetTimer+0x178
37, user32.dll!SendMessageW+0x5d
38, dopus.exe+0x5c31b3
39, dopus.exe+0x59b722
40, dopus.exe+0x5d46f6
41, user32.dll!TranslateMessageEx+0x2a1
42, user32.dll!CallWindowProcW+0x9c
43, user32.dll!CallWindowProcW+0x18
44, comctl32.dll!CreateUpDownControl+0x254d
45, comctl32.dll!DefSubclassProc+0x2b4
46, comctl32.dll!DefSubclassProc+0x7c
47, dopus.exe+0x3eb52
48, dopus.exe+0xc343b
49, comctl32.dll!DefSubclassProc+0x2b4
50, comctl32.dll!DefSubclassProc+0x7c
51, dopus.exe+0x393380
52, comctl32.dll!DefSubclassProc+0x2b4
53, comctl32.dll!DefSubclassProc+0x18b
54, user32.dll!TranslateMessageEx+0x2a1
55, user32.dll!TranslateMessage+0x1ea
56, dopus.exe+0x5da447
57, dopuslib.dll!IsWow64+0x31
58, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
59, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
60, kernel32.dll!BaseThreadInitThunk+0xd
61, ntdll.dll!RtlUserThreadStart+0x21
0, ntoskrnl.exe!_misaligned_access+0x17e7
1, ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d
2, ntoskrnl.exe!KeWaitForMutexObject+0x19f
3, ntoskrnl.exe!_misaligned_access+0xba4
4, ntoskrnl.exe!_misaligned_access+0x1821
5, ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x93d
6, ntoskrnl.exe!KeWaitForMutexObject+0x19f
7, ntoskrnl.exe!NtWaitForSingleObject+0xde
8, ntoskrnl.exe!KeSynchronizeExecution+0x3a23
9, ntdll.dll!NtWaitForSingleObject+0xa
10, ntdll.dll!RtlDeNormalizeProcessParams+0x5d8
11, ntdll.dll!RtlDeNormalizeProcessParams+0x4cb
12, shell32.dll!SHCreateDirectoryExW+0xa3b
13, shell32.dll!SHChangeNotifyDeregister+0xb34
14, shell32.dll!Ordinal874+0x5fea
15, shell32.dll!Ordinal733+0x251b1
16, shell32.dll!Ordinal99+0x4967
17, shell32.dll!Ordinal733+0x24676
18, shell32.dll!SHBindToParent+0xeb0
19, dopus.exe+0x34e8c7
20, dopus.exe+0x348712
21, dopus.exe+0x539f19
22, dopus.exe+0x5295c1
23, dopus.exe+0x534134
24, user32.dll!TranslateMessageEx+0x2a1
25, user32.dll!SetTimer+0x178
26, user32.dll!SendMessageW+0x5d
27, dopus.exe+0x5c31b3
28, dopus.exe+0x59b722
29, dopus.exe+0x5d46f6
30, user32.dll!TranslateMessageEx+0x2a1
31, user32.dll!CallWindowProcW+0x9c
32, user32.dll!CallWindowProcW+0x18
33, comctl32.dll!CreateUpDownControl+0x254d
34, comctl32.dll!DefSubclassProc+0x2b4
35, comctl32.dll!DefSubclassProc+0x7c
36, dopus.exe+0x3eb52
37, dopus.exe+0xc343b
38, comctl32.dll!DefSubclassProc+0x2b4
39, comctl32.dll!DefSubclassProc+0x7c
40, dopus.exe+0x393380
41, comctl32.dll!DefSubclassProc+0x2b4
42, comctl32.dll!DefSubclassProc+0x18b
43, user32.dll!TranslateMessageEx+0x2a1
44, user32.dll!TranslateMessage+0x1ea
45, dopus.exe+0x5da447
46, dopuslib.dll!IsWow64+0x31
47, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60673
48, dopuslib.dll!DummyDllFunctionToAvoidSymbolConfusion+0x60727
49, kernel32.dll!BaseThreadInitThunk+0xd
50, ntdll.dll!RtlUserThreadStart+0x21
I see a whole bunch of Shell stuff. What the heck are you guys hooking into there? Why is SHCreateDirectoryExW even happening as an example? WinRAR is making the folders, not Directory Opus!
I also have Avast Internet Security installed. Disabling it doesn't stop Directory Opus from destroying my CPU while WinRAR does its thing.