I am analyzing a dump that shows something strange: there seems to be a conflict between the commands !heap -x -v hexadecimal_address and !heap -flt s size_of_block
I ask about dangling pointers. On this dump, this sagging pointer turned out to be: 0x0bdd00c0
To get information about the heap memory block, I use !heap -x -v 0bdd00c0 Heap !heap -x -v 0bdd00c0 , which returns
Entry User Heap Segment Size PrevSize Unused Flags
-------------------------------------------------- ---------------------------
0bdd00b8 0bdd00c0 003b0000 0bc00000 98 20 8 busy
Which shows that in this case:
- the memory block is in
busy mode (most of the time on other dumps the memory is free here) - memory block
0x98 bytes large - the memory block is managed inside the
003b0000 heap.
What puzzles me:
When I run !heap -flt s 98 (I just want to watch other objects that have the same size) I get this result, which index 0bdd00c0 of my research does not display
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
_HEAP @ 3b0000
14b24fa8 0014 0014 [01] 14b24fb0 00098 - (busy)
0bc645a8 0014 0014 [01] 0bc645b0 00098 - (busy)
0bc66398 0014 0014 [01] 0bc663a0 00098 - (busy)
0bcbedf8 0014 0014 [01] 0bcbee00 00098 - (busy)
0bce2cc8 0014 0014 [01] 0bce2cd0 00098 - (busy)
0bceff88 0014 0014 [00] 0bceff90 00098 - (free)
0bdf2f78 0014 0014 [01] 0bdf2f80 00098 - (busy)
0be28c50 0014 0014 [01] 0be28c58 00098 - (busy)
0be57470 0014 0014 [00] 0be57478 00098 - (free)
0beed050 0014 0014 [01] 0beed058 00098 - (busy)
0bf1aaf0 0014 0014 [00] 0bf1aaf8 00098 - (free)
0bf214c0 0014 0014 [00] 0bf214c8 00098 - (free)
0bf99bf0 0014 0014 [00] 0bf99bf8 00098 - (free)
(I only gave you a snippet associated with a bunch of 3b0000)
So, I came to the conclusion that there seems to be a contradiction.
Am I doing / guessing something wrong? What can I do to understand what is wrong?
source share