I am following this stackoverflow post What do the different columns in the "!heap -flt -s xxxx" windbg command represent
I am trying to understand the information printed out for one of the heaps that using up a lot of memory.
I can understand most of the columns but on my windbg, I see an additional column. Most of my entries are marked as Internal. I wonder what that means. I have done !gflags +ust
. So, I can see the call stack for making the memory allocation. I can do it on most of the entries except the ones marked as Internal.
What does Internal mean? Is it something related to the implementation of LFH? If this is the internal implementation of LFH, how and when will these Internal heap entries return to the free list? It's holding up my memory for no reasons now.
Here is the output of !heap -h 0000000002330000
for your reference.
Index Address Name Debugging options enabled
8: 02330000
Segment at 0000000002330000 to 0000000002340000 (00010000 bytes committed)
Segment at 00000000032b0000 to 00000000033b0000 (00100000 bytes committed)
Segment at 00000000065a0000 to 00000000067a0000 (00200000 bytes committed)
Segment at 00000000067a0000 to 0000000006ba0000 (00400000 bytes committed)
Segment at 0000000006d80000 to 0000000007580000 (006f2000 bytes committed)
Flags: 08001002
ForceFlags: 00000000
Granularity: 16 bytes
Segment Reserve: 01000000
Segment Commit: 00002000
DeCommit Block Thres: 00000400
DeCommit Total Thres: 00001000
Total Free Size: 0000274d
Max. Allocation Size: 000007fffffdefff
Lock Variable at: 00000000023301f8
Next TagIndex: 0000
Maximum TagIndex: 0000
Tag Entries: 00000000
PsuedoTag Entries: 00000000
Virtual Alloc List: 02330118
Uncommitted ranges: 023300f8
FreeList[ 00 ] at 0000000002330158: 0000000007454600 . 00000000032e3de0 (24 blocks)
Heap entries for Segment00 in Heap 0000000002330000
0000000002330000: 00000 . 00a70 [101] - busy (a6f)
0000000002330a70: 00a70 . 00860 [101] - busy (85f)
00000000023312d0: 00860 . 038b0 [101] - busy (38af)
0000000002334b80: 038b0 . 00330 [100]
0000000002334eb0: 00330 . 00b60 [101] - busy (b34)
0000000002335a10: 00b60 . 00160 [101] - busy (134)
0000000002335b70: 00160 . 00090 [101] - busy (5c)
0000000002335c00: 00090 . 00090 [101] - busy (5c)
0000000002335c90: 00090 . 00040 [100]
0000000002335cd0: 00040 . 00090 [101] - busy (5c)
0000000002335d60: 00090 . 00020 [100]
0000000002335d80: 00020 . 00130 [101] - busy (104)
0000000002335eb0: 00130 . 00080 [101] - busy (53)
0000000002335f30: 00080 . 00090 [101] - busy (65)
0000000002335fc0: 00090 . 01060 [101] - busy (1034)
0000000002337020: 01060 . 01020 [101] - busy (ff0) Internal
0000000002338040: 01020 . 00420 [101] - busy (3f0) Internal
0000000002338460: 00420 . 00090 [101] - busy (64)
00000000023384f0: 00090 . 00260 [101] - busy (234)
0000000002338750: 00260 . 00090 [101] - busy (5c)
00000000023387e0: 00090 . 00080 [101] - busy (54)
0000000002338860: 00080 . 00080 [101] - busy (4c)
00000000023388e0: 00080 . 00030 [100]
0000000002338910: 00030 . 00090 [101] - busy (5c)
00000000023389a0: 00090 . 00090 [101] - busy (64)
0000000002338a30: 00090 . 00260 [101] - busy (234)
0000000002338c90: 00260 . 00060 [101] - busy (35)
0000000002338cf0: 00060 . 00160 [101] - busy (134)
0000000002338e50: 00160 . 00260 [101] - busy (234)
00000000023390b0: 00260 . 00160 [101] - busy (134)
0000000002339210: 00160 . 000c0 [101] - busy (94)
00000000023392d0: 000c0 . 00080 [101] - busy (4c)
0000000002339350: 00080 . 000c0 [101] - busy (84)
0000000002339410: 000c0 . 000c0 [101] - busy (84)
00000000023394d0: 000c0 . 000c0 [101] - busy (94)
0000000002339590: 000c0 . 000c0 [101] - busy (94)
0000000002339650: 000c0 . 000a0 [101] - busy (6c)
00000000023396f0: 000a0 . 000c0 [101] - busy (94)
00000000023397b0: 000c0 . 000a0 [101] - busy (6c)
0000000002339850: 000a0 . 000a0 [101] - busy (6c)
00000000023398f0: 000a0 . 02020 [101] - busy (1ff0) Internal
000000000233b910: 02020 . 000a0 [101] - busy (74)
000000000233b9b0: 000a0 . 00060 [101] - busy (35)
000000000233ba10: 00060 . 02020 [101] - busy (1ff0) Internal
000000000233da30: 02020 . 000a0 [101] - busy (6c)
000000000233dad0: 000a0 . 000c0 [101] - busy (94)
000000000233db90: 000c0 . 000a0 [101] - busy (6c)
000000000233dc30: 000a0 . 00060 [100]
000000000233dc90: 00060 . 001c0 [101] - busy (194)
000000000233de50: 001c0 . 00260 [101] - busy (234)
000000000233e0b0: 00260 . 000b0 [101] - busy (80)
000000000233e160: 000b0 . 00020 [100]
000000000233e180: 00020 . 000c0 [101] - busy (94)
000000000233e240: 000c0 . 000a0 [101] - busy (6c)
000000000233e2e0: 000a0 . 000a0 [101] - busy (74)
000000000233e380: 000a0 . 001c0 [101] - busy (194)
000000000233e540: 001c0 . 00020 [100]
000000000233e560: 00020 . 000c0 [101] - busy (84)
000000000233e620: 000c0 . 000c0 [101] - busy (84)
000000000233e6e0: 000c0 . 000c0 [101] - busy (94)
000000000233e7a0: 000c0 . 000c0 [101] - busy (94)
000000000233e860: 000c0 . 00260 [101] - busy (234)
000000000233eac0: 00260 . 000b0 [101] - busy (82)
000000000233eb70: 000b0 . 00350 [100]
000000000233eec0: 00350 . 00330 [101] - busy (2fc)
000000000233f1f0: 00330 . 00440 [101] - busy (40c)
000000000233f630: 00440 . 00420 [101] - busy (3f0) Internal
000000000233fa50: 00420 . 00460 [100]
000000000233feb0: 00460 . 000b0 [101] - busy (80)
000000000233ff60: 000b0 . 00060 [100]
000000000233ffc0: 00060 . 00040 [111] - busy (3d)
0000000002340000: 00000000 - uncommitted bytes.
Heap entries for Segment01 in Heap 0000000002330000
00000000032b0000: 00000 . 00070 [101] - busy (6f)
00000000032b0070: 00070 . 0c470 [101] - busy (c440) Internal
00000000032bc4e0: 0c470 . 00280 [101] - busy (254)
00000000032bc760: 00280 . 000a0 [101] - busy (70)
00000000032bc800: 000a0 . 00080 [101] - busy (4c)
00000000032bc880: 00080 . 00080 [101] - busy (58)
00000000032bc900: 00080 . 00070 [101] - busy (48)
00000000032bc970: 00070 . 00080 [101] - busy (4b)
00000000032bc9f0: 00080 . 00070 [101] - busy (42)
00000000032bca60: 00070 . 00080 [101] - busy (4d)
00000000032bcae0: 00080 . 000a0 [101] - busy (72)
00000000032bcb80: 000a0 . 00080 [101] - busy (51)
00000000032bcc00: 00080 . 000b0 [101] - busy (7c)
00000000032bccb0: 000b0 . 00070 [101] - busy (46)
00000000032bcd20: 00070 . 00080 [101] - busy (4c)
00000000032bcda0: 00080 . 00080 [101] - busy (4f)
00000000032bce20: 00080 . 00080 [101] - busy (52)
00000000032bcea0: 00080 . 00090 [101] - busy (5d)
00000000032bcf30: 00090 . 00080 [101] - busy (4b)
00000000032bcfb0: 00080 . 00070 [101] - busy (43)
00000000032bd020: 00070 . 00080 [101] - busy (4a)
00000000032bd0a0: 00080 . 00080 [101] - busy (49)
00000000032bd120: 00080 . 00070 [101] - busy (48)
00000000032bd190: 00070 . 00070 [101] - busy (44)
00000000032bd200: 00070 . 000a0 [101] - busy (69)
00000000032bd2a0: 000a0 . 00070 [101] - busy (46)
00000000032bd310: 00070 . 00070 [101] - busy (3c)
00000000032bd380: 00070 . 000c0 [101] - busy (8c)
00000000032bd440: 000c0 . 00070 [101] - busy (3c)
00000000032bd4b0: 00070 . 00090 [101] - busy (5c)
00000000032bd540: 00090 . 00090 [101] - busy (5c)
00000000032bd5d0: 00090 . 00090 [101] - busy (5c)
00000000032bd660: 00090 . 000a0 [101] - busy (5c)
00000000032bd700: 000a0 . 00070 [101] - busy (44)
00000000032bd770: 00070 . 00090 [101] - busy (5c)
00000000032bd800: 00090 . 00070 [101] - busy (3c)
00000000032bd870: 00070 . 00050 [100]
00000000032bd8c0: 00050 . 00260 [101] - busy (234)
00000000032bdb20: 00260 . 00070 [101] - busy (3c)
00000000032bdb90: 00070 . 00090 [101] - busy (5c)
00000000032bdc20: 00090 . 00070 [101] - busy (3c)
00000000032bdc90: 00070 . 00070 [101] - busy (3c)
00000000032bdd00: 00070 . 00090 [101] - busy (5c)
00000000032bdd90: 00090 . 00070 [101] - busy (3c)
00000000032bde00: 00070 . 00070 [101] - busy (3c)
00000000032bde70: 00070 . 00090 [101] - busy (5c)
00000000032bdf00: 00090 . 00070 [101] - busy (3c)
00000000032bdf70: 00070 . 00cc0 [100]
00000000032bec30: 00cc0 . 00330 [101] - busy (2fc)
00000000032bef60: 00330 . 00440 [101] - busy (40a)
00000000032bf3a0: 00440 . 00220 [100]
00000000032bf5c0: 00220 . 00330 [101] - busy (2fc)
00000000032bf8f0: 00330 . 04020 [101] - busy (3ff0) Internal
00000000032c3910: 04020 . 02020 [101] - busy (1ff0) Internal
00000000032c5930: 02020 . 00210 [100]
00000000032c5b40: 00210 . 01020 [101] - busy (ff0) Internal
00000000032c6b60: 01020 . 01020 [101] - busy (ff0) Internal
00000000032c7b80: 01020 . 00440 [101] - busy (40c)
00000000032c7fc0: 00440 . 00440 [101] - busy (40a)
00000000032c8400: 00440 . 00430 [101] - busy (3f0) Internal
00000000032c8830: 00430 . 02020 [101] - busy (1ff0) Internal
00000000032ca850: 02020 . 02020 [101] - busy (1ff0) Internal
00000000032cc870: 02020 . 01020 [101] - busy (ff0) Internal
00000000032cd890: 01020 . 00420 [101] - busy (3f0) Internal
00000000032cdcb0: 00420 . 00420 [101] - busy (3f0) Internal
00000000032ce0d0: 00420 . 00420 [101] - busy (3f0) Internal
00000000032ce4f0: 00420 . 003a0 [100]
00000000032ce890: 003a0 . 02020 [101] - busy (1ff0) Internal
00000000032d08b0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000032d28d0: 02020 . 01020 [101] - busy (ff0) Internal
00000000032d38f0: 01020 . 00420 [101] - busy (3f0) Internal
00000000032d3d10: 00420 . 00420 [101] - busy (3f0) Internal
00000000032d4130: 00420 . 003a0 [100]
00000000032d44d0: 003a0 . 00420 [101] - busy (3f0) Internal
00000000032d48f0: 00420 . 01020 [101] - busy (ff0) Internal
00000000032d5910: 01020 . 04020 [101] - busy (3ff0) Internal
00000000032d9930: 04020 . 01020 [101] - busy (ff0) Internal
00000000032da950: 01020 . 04020 [101] - busy (3ff0) Internal
00000000032de970: 04020 . 01020 [101] - busy (ff0) Internal
00000000032df990: 01020 . 04020 [101] - busy (3ff0) Internal
00000000032e39b0: 04020 . 00420 [101] - busy (3f0) Internal
00000000032e3dd0: 00420 . 00020 [100]
00000000032e3df0: 00020 . 04020 [101] - busy (3ff0) Internal
00000000032e7e10: 04020 . 02020 [101] - busy (1ff0) Internal
00000000032e9e30: 02020 . 01020 [101] - busy (ff0) Internal
00000000032eae50: 01020 . 02020 [101] - busy (1ff0) Internal
00000000032ece70: 02020 . 01020 [101] - busy (ff0) Internal
00000000032ede90: 01020 . 000f0 [100]
00000000032edf80: 000f0 . 01020 [101] - busy (ff0) Internal
00000000032eefa0: 01020 . 01020 [101] - busy (ff0) Internal
00000000032effc0: 01020 . 02020 [101] - busy (1ff0) Internal
00000000032f1fe0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000032f4000: 02020 . 00420 [101] - busy (3f0) Internal
00000000032f4420: 00420 . 00160 [100]
00000000032f4580: 00160 . 02020 [101] - busy (1ff0) Internal
00000000032f65a0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000032f85c0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000032fa5e0: 02020 . 08020 [101] - busy (7ff0) Internal
0000000003302600: 08020 . 02020 [101] - busy (1ff0) Internal
0000000003304620: 02020 . 01020 [101] - busy (ff0) Internal
0000000003305640: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003307660: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003309680: 02020 . 08020 [101] - busy (7ff0) Internal
00000000033116a0: 08020 . 02020 [101] - busy (1ff0) Internal
00000000033136c0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000033156e0: 02020 . 01020 [101] - busy (ff0) Internal
0000000003316700: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003318720: 02020 . 02020 [101] - busy (1ff0) Internal
000000000331a740: 02020 . 02020 [101] - busy (1ff0) Internal
000000000331c760: 02020 . 02020 [101] - busy (1ff0) Internal
000000000331e780: 02020 . 02020 [101] - busy (1ff0) Internal
00000000033207a0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000033227c0: 02020 . 01020 [101] - busy (ff0) Internal
00000000033237e0: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003325800: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003327820: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003329840: 02020 . 01020 [101] - busy (ff0) Internal
000000000332a860: 01020 . 02020 [101] - busy (1ff0) Internal
000000000332c880: 02020 . 01020 [101] - busy (ff0) Internal
000000000332d8a0: 01020 . 02020 [101] - busy (1ff0) Internal
000000000332f8c0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000033318e0: 02020 . 08020 [101] - busy (7ff0) Internal
0000000003339900: 08020 . 01020 [101] - busy (ff0) Internal
000000000333a920: 01020 . 02020 [101] - busy (1ff0) Internal
000000000333c940: 02020 . 02020 [101] - busy (1ff0) Internal
000000000333e960: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003340980: 02020 . 02020 [101] - busy (1ff0) Internal
00000000033429a0: 02020 . 01020 [101] - busy (ff0) Internal
00000000033439c0: 01020 . 02020 [101] - busy (1ff0) Internal
00000000033459e0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003347a00: 02020 . 01020 [101] - busy (ff0) Internal
0000000003348a20: 01020 . 02020 [101] - busy (1ff0) Internal
000000000334aa40: 02020 . 02020 [101] - busy (1ff0) Internal
000000000334ca60: 02020 . 02020 [101] - busy (1ff0) Internal
000000000334ea80: 02020 . 01020 [101] - busy (ff0) Internal
000000000334faa0: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003351ac0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003353ae0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003355b00: 02020 . 01020 [101] - busy (ff0) Internal
0000000003356b20: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003358b40: 02020 . 02020 [101] - busy (1ff0) Internal
000000000335ab60: 02020 . 02000 [100]
000000000335cb60: 02000 . 02020 [101] - busy (1ff0) Internal
000000000335eb80: 02020 . 04020 [101] - busy (3ff0) Internal
0000000003362ba0: 04020 . 02020 [101] - busy (1ff0) Internal
0000000003364bc0: 02020 . 01020 [101] - busy (ff0) Internal
0000000003365be0: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003367c00: 02020 . 01020 [101] - busy (ff0) Internal
0000000003368c20: 01020 . 04020 [101] - busy (3ff0) Internal
000000000336cc40: 04020 . 02020 [101] - busy (1ff0) Internal
000000000336ec60: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003370c80: 02020 . 01020 [101] - busy (ff0) Internal
0000000003371ca0: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003373cc0: 02020 . 01020 [101] - busy (ff0) Internal
0000000003374ce0: 01020 . 02020 [101] - busy (1ff0) Internal
0000000003376d00: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003378d20: 02020 . 02020 [101] - busy (1ff0) Internal
000000000337ad40: 02020 . 04020 [101] - busy (3ff0) Internal
000000000337ed60: 04020 . 02020 [101] - busy (1ff0) Internal
0000000003380d80: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003382da0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003384dc0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003386de0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003388e00: 02020 . 02020 [101] - busy (1ff0) Internal
000000000338ae20: 02020 . 02020 [101] - busy (1ff0) Internal
000000000338ce40: 02020 . 02020 [101] - busy (1ff0) Internal
000000000338ee60: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003390e80: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003392ea0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003394ec0: 02020 . 02020 [101] - busy (1ff0) Internal
0000000003396ee0: 02020 . 08020 [101] - busy (7ff0) Internal
000000000339ef00: 08020 . 02020 [101] - busy (1ff0) Internal
00000000033a0f20: 02020 . 02020 [101] - busy (1ff0) Internal
00000000033a2f40: 02020 . 02020 [101] - busy (1ff0) Internal
00000000033a4f60: 02020 . 08020 [101] - busy (7ff0) Internal
00000000033acf80: 08020 . 02020 [101] - busy (1ff0) Internal
00000000033aefa0: 02020 . 00420 [101] - busy (3f0) Internal
00000000033af3c0: 00420 . 00420 [101] - busy (3f0) Internal
00000000033af7e0: 00420 . 00420 [101] - busy (3f0) Internal
00000000033afc00: 00420 . 003c0 [100]
00000000033affc0: 003c0 . 00040 [111] - busy (3d)
00000000033b0000: 00000000 - uncommitted bytes.
Heap entries for Segment02 in Heap 0000000002330000
00000000065a0000: 00000 . 00070 [101] - busy (6f)
00000000065a0070: 00070 . 04020 [101] - busy (3ff0) Internal
00000000065a4090: 04020 . 04020 [101] - busy (3ff0) Internal
00000000065a80b0: 04020 . 02020 [101] - busy (1ff0) Internal
00000000065aa0d0: 02020 . 02020 [101] - busy (1ff0) Internal
00000000065ac0f0: 02020 . 08020 [101] - busy (7ff0) Internal
00000000065b4110: 08020 . 02020 [101] - busy (1ff0) Internal
00000000065b6130: 02020 . 04020 [101] - busy (3ff0) Internal
00000000065ba150: 04020 . 04020 [101] - busy (3ff0) Internal
00000000065be170: 04020 . 08020 [101] - busy (7ff0) Internal
00000000065c6190: 08020 . 04020 [101] - busy (3ff0) Internal
00000000065ca1b0: 04020 . 02020 [101] - busy (1ff0) Internal
00000000065cc1d0: 02020 . 04020 [101] - busy (3ff0) Internal
00000000065d01f0: 04020 . 04020 [101] - busy (3ff0) Internal
00000000065d4210: 04020 . 04020 [101] - busy (3ff0) Internal
00000000065d8230: 04020 . 04020 [101] - busy (3ff0) Internal
00000000065dc250: 04020 . 02020 [101] - busy (1ff0) Internal
00000000065de270: 02020 . 08020 [101] - busy (7ff0) Internal
00000000065e6290: 08020 . 04020 [101] - busy (3ff0) Internal
00000000065ea2b0: 04020 . 04020 [101] - busy (3ff0) Internal
00000000065ee2d0: 04020 . 08020 [101] - busy (7ff0) Internal
00000000065f62f0: 08020 . 04020 [101] - busy (3ff0) Internal
00000000065fa310: 04020 . 04020 [101] - busy (3ff0) Internal
00000000065fe330: 04020 . 08020 [101] - busy (7ff0) Internal
0000000006606350: 08020 . 04020 [101] - busy (3ff0) Internal
000000000660a370: 04020 . 04020 [101] - busy (3ff0) Internal
000000000660e390: 04020 . 04020 [101] - busy (3ff0) Internal
00000000066123b0: 04020 . 10020 [101] - busy (fff0) Internal
00000000066223d0: 10020 . 04020 [101] - busy (3ff0) Internal
00000000066263f0: 04020 . 04020 [101] - busy (3ff0) Internal
000000000662a410: 04020 . 04020 [101] - busy (3ff0) Internal
000000000662e430: 04020 . 04020 [101] - busy (3ff0) Internal
0000000006632450: 04020 . 10020 [101] - busy (fff0) Internal
0000000006642470: 10020 . 04020 [101] - busy (3ff0) Internal
0000000006646490: 04020 . 04020 [101] - busy (3ff0) Internal
000000000664a4b0: 04020 . 04020 [101] - busy (3ff0) Internal
000000000664e4d0: 04020 . 04020 [101] - busy (3ff0) Internal
00000000066524f0: 04020 . 08020 [101] - busy (7ff0) Internal
000000000665a510: 08020 . 08020 [101] - busy (7ff0) Internal
0000000006662530: 08020 . 04020 [101] - busy (3ff0) Internal
0000000006666550: 04020 . 04020 [101] - busy (3ff0) Internal
000000000666a570: 04020 . 10020 [101] - busy (fff0) Internal
000000000667a590: 10020 . 04020 [101] - busy (3ff0) Internal
000000000667e5b0: 04020 . 08020 [101] - busy (7ff0) Internal
00000000066865d0: 08020 . 08020 [101] - busy (7ff0) Internal
000000000668e5f0: 08020 . 10020 [101] - busy (fff0) Internal
000000000669e610: 10020 . 04020 [101] - busy (3ff0) Internal
00000000066a2630: 04020 . 10020 [101] - busy (fff0) Internal
00000000066b2650: 10020 . 08020 [101] - busy (7ff0) Internal
00000000066ba670: 08020 . 02020 [101] - busy (1ff0) Internal
00000000066bc690: 02020 . 08020 [101] - busy (7ff0) Internal
00000000066c46b0: 08020 . 08020 [101] - busy (7ff0) Internal
00000000066cc6d0: 08020 . 10020 [101] - busy (fff0) Internal
00000000066dc6f0: 10020 . 08020 [101] - busy (7ff0) Internal
00000000066e4710: 08020 . 08020 [101] - busy (7ff0) Internal
00000000066ec730: 08020 . 08020 [101] - busy (7ff0) Internal
00000000066f4750: 08020 . 10020 [101] - busy (fff0) Internal
0000000006704770: 10020 . 08020 [101] - busy (7ff0) Internal
000000000670c790: 08020 . 10020 [101] - busy (fff0) Internal
000000000671c7b0: 10020 . 08020 [101] - busy (7ff0) Internal
00000000067247d0: 08020 . 08020 [101] - busy (7ff0) Internal
000000000672c7f0: 08020 . 20020 [101] - busy (1fff0) Internal
000000000674c810: 20020 . 08020 [101] - busy (7ff0) Internal
0000000006754830: 08020 . 08020 [101] - busy (7ff0) Internal
000000000675c850: 08020 . 08020 [101] - busy (7ff0) Internal
0000000006764870: 08020 . 08020 [101] - busy (7ff0) Internal
000000000676c890: 08020 . 20020 [101] - busy (1fff0) Internal
000000000678c8b0: 20020 . 08020 [101] - busy (7ff0) Internal
00000000067948d0: 08020 . 08020 [101] - busy (7ff0) Internal
000000000679c8f0: 08020 . 02020 [101] - busy (1ff0) Internal
000000000679e910: 02020 . 016b0 [100]
000000000679ffc0: 016b0 . 00040 [111] - busy (3d)
00000000067a0000: 00000000 - uncommitted bytes.
Heap entries for Segment03 in Heap 0000000002330000
00000000067a0000: 00000 . 00070 [101] - busy (6f)
00000000067a0070: 00070 . 08020 [101] - busy (7ff0) Internal
00000000067a8090: 08020 . 08020 [101] - busy (7ff0) Internal
00000000067b00b0: 08020 . 08020 [101] - busy (7ff0) Internal
00000000067b80d0: 08020 . 20020 [101] - busy (1fff0) Internal
00000000067d80f0: 20020 . 08020 [101] - busy (7ff0) Internal
00000000067e0110: 08020 . 08020 [101] - busy (7ff0) Internal
00000000067e8130: 08020 . 08020 [101] - busy (7ff0) Internal
00000000067f0150: 08020 . 08020 [101] - busy (7ff0) Internal
00000000067f8170: 08020 . 10020 [101] - busy (fff0) Internal
0000000006808190: 10020 . 10020 [101] - busy (fff0) Internal
00000000068181b0: 10020 . 20020 [101] - busy (1fff0) Internal
00000000068381d0: 20020 . 10020 [101] - busy (fff0) Internal
00000000068481f0: 10020 . 08020 [101] - busy (7ff0) Internal
0000000006850210: 08020 . 20020 [101] - busy (1fff0) Internal
0000000006870230: 20020 . 10020 [101] - busy (fff0) Internal
0000000006880250: 10020 . 08020 [101] - busy (7ff0) Internal
0000000006888270: 08020 . 10020 [101] - busy (fff0) Internal
0000000006898290: 10020 . 20020 [101] - busy (1fff0) Internal
00000000068b82b0: 20020 . 10020 [101] - busy (fff0) Internal
00000000068c82d0: 10020 . 10020 [101] - busy (fff0) Internal
00000000068d82f0: 10020 . 20020 [101] - busy (1fff0) Internal
00000000068f8310: 20020 . 10020 [101] - busy (fff0) Internal
0000000006908330: 10020 . 10020 [101] - busy (fff0) Internal
0000000006918350: 10020 . 10020 [101] - busy (fff0) Internal
0000000006928370: 10020 . 10020 [101] - busy (fff0) Internal
0000000006938390: 10020 . 20020 [101] - busy (1fff0) Internal
00000000069583b0: 20020 . 10020 [101] - busy (fff0) Internal
00000000069683d0: 10020 . 10020 [101] - busy (fff0) Internal
00000000069783f0: 10020 . 10020 [101] - busy (fff0) Internal
0000000006988410: 10020 . 10020 [101] - busy (fff0) Internal
0000000006998430: 10020 . 10020 [101] - busy (fff0) Internal
00000000069a8450: 10020 . 40020 [101] - busy (3fff0) Internal
00000000069e8470: 40020 . 10020 [101] - busy (fff0) Internal
00000000069f8490: 10020 . 10020 [101] - busy (fff0) Internal
0000000006a084b0: 10020 . 10020 [101] - busy (fff0) Internal
0000000006a184d0: 10020 . 04020 [101] - busy (3ff0) Internal
0000000006a1c4f0: 04020 . 10020 [101] - busy (fff0) Internal
0000000006a2c510: 10020 . 40020 [101] - busy (3fff0) Internal
0000000006a6c530: 40020 . 10020 [101] - busy (fff0) Internal
0000000006a7c550: 10020 . 10020 [101] - busy (fff0) Internal
0000000006a8c570: 10020 . 10020 [101] - busy (fff0) Internal
0000000006a9c590: 10020 . 10020 [101] - busy (fff0) Internal
0000000006aac5b0: 10020 . 40020 [101] - busy (3fff0) Internal
0000000006aec5d0: 40020 . 10020 [101] - busy (fff0) Internal
0000000006afc5f0: 10020 . 10020 [101] - busy (fff0) Internal
0000000006b0c610: 10020 . 20020 [101] - busy (1fff0) Internal
0000000006b2c630: 20020 . 40020 [101] - busy (3fff0) Internal
0000000006b6c650: 40020 . 10020 [101] - busy (fff0) Internal
0000000006b7c670: 10020 . 20020 [101] - busy (1fff0) Internal
0000000006b9c690: 20020 . 03930 [100]
0000000006b9ffc0: 03930 . 00040 [111] - busy (3d)
0000000006ba0000: 00000000 - uncommitted bytes.
Heap entries for Segment04 in Heap 0000000002330000
0000000006d80000: 00000 . 00070 [101] - busy (6f)
0000000006d80070: 00070 . 10020 [101] - busy (fff0) Internal
0000000006d90090: 10020 . 40020 [101] - busy (3fff0) Internal
0000000006dd00b0: 40020 . 20020 [101] - busy (1fff0) Internal
0000000006df00d0: 20020 . 20020 [101] - busy (1fff0) Internal
0000000006e100f0: 20020 . 20020 [101] - busy (1fff0) Internal
0000000006e30110: 20020 . 40020 [101] - busy (3fff0) Internal
0000000006e70130: 40020 . 20020 [101] - busy (1fff0) Internal
0000000006e90150: 20020 . 40020 [101] - busy (3fff0) Internal
0000000006ed0170: 40020 . 20020 [101] - busy (1fff0) Internal
0000000006ef0190: 20020 . 20020 [101] - busy (1fff0) Internal
0000000006f101b0: 20020 . 20020 [101] - busy (1fff0) Internal
0000000006f301d0: 20020 . 40020 [101] - busy (3fff0) Internal
0000000006f701f0: 40020 . 04020 [101] - busy (3ff0) Internal
0000000006f74210: 04020 . 20020 [101] - busy (1fff0) Internal
0000000006f94230: 20020 . 20020 [101] - busy (1fff0) Internal
0000000006fb4250: 20020 . 40020 [101] - busy (3fff0) Internal
0000000006ff4270: 40020 . 04020 [101] - busy (3ff0) Internal
0000000006ff8290: 04020 . 20020 [101] - busy (1fff0) Internal
00000000070182b0: 20020 . 20020 [101] - busy (1fff0) Internal
00000000070382d0: 20020 . 04020 [101] - busy (3ff0) Internal
000000000703c2f0: 04020 . 08020 [101] - busy (7ff0) Internal
0000000007044310: 08020 . 40020 [101] - busy (3fff0) Internal
0000000007084330: 40020 . 20020 [101] - busy (1fff0) Internal
EDIT 10/26/2012
I finally found out the place that causing the leak, by inspecting the memory content inside the Internal heap entry. It contains a number of memory allocation caused by the same operator new
. I don't know why they are all combined into one single heap entry but by looking at the content, I managed to find out the code causing the leak. Perhaps, it's a CRT feature to combine all similar data into one heap entry? Or do I misunderstand the meaning of heap entry completely?
TL;DR: Heap blocks marked as "internal" have a special flag in _HEAP_ENTRY.Flags
[edit] revised my previous answer with a proper answer.
Here's my guess attempt to your question.
According to the windbg help, the "!heap" command code is located in exts.dll (i.e. \winxp\exts.dll).
Put this DLL on IDA and downloaded symbols for it. There’s only one occurrence of "Internal" in the DLL, inside the DumpHeapEntry() function :
The output of "Internal" is therefore conditioned by the value of byte_1963152 : if byte_1963152 is not 0, then "Internal" is printed. Only once occurrence of write value with anything else than 0 happens (in ReadHeapEntry() which is called at the start of DumpHeapEntry() ):
This translates to:
var_B is set here :
__aullshr stands for "Arithmetic Unsigned Long Long Shift Right". In the above code eax is the low 32-bit part of a 64-bit unsigned long long, while edx is the high 32-bit part. Notice that var_B is a 8-bit quantity ('al' register is used).
Hence:
var_14 and var_18 are set here :
So, windbg use the GetShortField() function on "AgregateCode" and sets both of the aforementioned variable (which is also a single unsigned long long value). Note that it also uses the HEAP.Encoding.Code1 and HEAP.Encoding.Code2 to XOR both of the value (HEAP is the the current heap from which the heap entry is a part).
"AgregateCode" is a field of both HEAP_ENTRY and HEAP_FREE_ENTRY structures (from Win 8.1 x86):
This translated to C, gives:
Thus we have the following pseudo-code (minus some other checks):
Given that "AgregateCode" is ... well, an aggregate of Code1 to Code 4 :
If you shift 0x10 and AND 8 the AgregateCode field you end up finally testing the 11th bit (start counting at 0) of Code1.
As the structure is a big union, you finally end up testing: _HEAP_ENTRY.Flags
It happens that a heap flag has already the value 8, its name is: HEAP_ENTRY_VIRTUAL_ALLOC
http://doxygen.reactos.org/da/ddb/heap_8h_source.html#l00044
https://os-design.googlecode.com/svn/trunk/ntos/inc/heap.h
It seems that this flag is used to manage big allocations, although those blocks are used internally by the system and not available directly to the end user.
Typically such internal blocks have Flags member set to 9: HEAP_ENTRY_VIRTUAL_ALLOC | HEAP_ENTRY_BUSY
[edit] Example :
Say I have a heap at 0x005b0000 :
This heap (_HEAP) has a HEAP_ENTRY marked as "Internal" at 0x005b8d00:
A detailed view of the HEAP structure (notice the "Encoding" structure (_HEAP_ENTRY) at offset 0x50 which helps to decode the encoded heap entry with an XOR):
Now a detailed view of the _HEAP_ENTRY (marked as internal). This is an encoded structure, which can be decoded by XORing it with _HEAP.Encoding member:
Now the commented code :
1) Fetch Aggregate form HEAP_ENTRY
2) Decode (XOR) HEAP_ENTRY with HEAP.Encoding member
3) Shift result to get _HEAP_ENTRY.Flags
4) AND result with HEAP_ENTRY_VIRTUAL_ALLOC (8) to see if it's an internal block
Hope it helps!