I'm using the Everthing SDK in my program envtool.
Now I've added some appverif.exe tests for my program
that shows some misuse (?) of the Process Heap by everything.c.
First here are my appverif.exe settings:
APPLICATION_VERIFIER_HEAPS_CORRUPTED_HEAP_BLOCK_SUFFIX (f)
Corrupted suffix pattern for heap block.
Most typically this happens for buffer overrun errors. Sometimes the application
verifier places non-accessible pages at the end of the allocation and buffer
overruns will cause an access violation and sometimes the heap block is
followed by a magic pattern. If this pattern is changed when the block gets
freed you will get this break. These breaks can be quite difficult to debug
because you do not have the actual moment when corruption happened.
You just have access to the free moment (stop happened here) and the
allocation stack trace (!heap -p -a HEAP_BLOCK_ADDRESS)
Arguments:
Arg1: 000001738e851000, Heap handle used in the call.
Arg2: 00000173a2ecdfd0, Heap block involved in the operation.
Arg3: 000000000000002f, Size of the heap block.
Arg4: 00000173a2ecdfff, Corruption address.
Please make sure you are using the correct Everything_SetSearchW or Everything_SetSearchA call.
Please make sure you are passing a wchar string to Everything_SetSearchW (or an ANSI string to Everything_SetSearchA)
Please make sure these strings are NULL terminated.
The crash you are seeing is most likely caused by heap corruption.
_Everything_Free will call HeapFree, which will perform a heap check.
The Everything SDK uses HeapAlloc/HeapFree, which will likely not show any leaks, even when there are leaks.
Replace HeapAlloc/HeapFree with malloc/free to be sure.