Bug 820566 - DMD: Improve testing by using a script to filter out platform-specific stuff in the output. r=jlebar.

--HG--
extra : rebase_source : 9afed1fade6007f76d69faa1d3bd8d95516380d5
This commit is contained in:
Nicholas Nethercote 2013-01-06 19:18:13 -08:00
parent 07c565db58
commit 90894d5546
3 changed files with 394 additions and 79 deletions

View File

@ -782,12 +782,6 @@ StackTrace::Print(const Writer& aWriter, LocationService* aLocService) const
return;
}
if (gMode == Test) {
// Don't print anything because there's too much variation.
W(" (stack omitted due to test mode)\n");
return;
}
for (uint32_t i = 0; i < mLength; i++) {
aLocService->WriteLocation(aWriter, Pc(i));
}
@ -812,7 +806,7 @@ StackTrace::Get(Thread* aT)
// In normal operation, skip=3 gets us past various malloc wrappers into
// more interesting stuff. But in test mode we need to skip a bit less to
// sufficiently differentiate some similar stacks.
uint32_t skip = (gMode == Test) ? 2 : 3;
uint32_t skip = 2;
nsresult rv = NS_StackWalk(StackWalkCallback, skip, &tmp, 0, nullptr);
if (NS_FAILED(rv) || tmp.mLength == 0) {
tmp.mLength = 0;
@ -1579,7 +1573,7 @@ NopStackWalkCallback(void* aPc, void* aSp, void* aClosure)
// Note that fopen() can allocate.
static FILE*
OpenTestOrStressFile(const char* aFilename)
OpenOutputFile(const char* aFilename)
{
FILE* fp = fopen(aFilename, "w");
if (!fp) {
@ -1692,10 +1686,10 @@ Init(const malloc_table_t* aMallocTable)
gBlockTable->init(8192);
if (gMode == Test) {
// OpenTestOrStressFile() can allocate. So do this before setting
// OpenOutputFile() can allocate. So do this before setting
// gIsDMDRunning so those allocations don't show up in our results. Once
// gIsDMDRunning is set we are intercepting malloc et al. in earnest.
FILE* fp = OpenTestOrStressFile("test.dmd");
FILE* fp = OpenOutputFile("test.dmd");
gIsDMDRunning = true;
StatusMsg("running test mode...\n");
@ -1706,7 +1700,7 @@ Init(const malloc_table_t* aMallocTable)
}
if (gMode == Stress) {
FILE* fp = OpenTestOrStressFile("stress.dmd");
FILE* fp = OpenOutputFile("stress.dmd");
gIsDMDRunning = true;
StatusMsg("running stress mode...\n");
@ -1827,12 +1821,6 @@ PrintSortedTraceAndFrameRecords(const Writer& aWriter,
PrintSortedRecords(aWriter, aLocService, aStr, astr, aTraceRecordTable,
aCategoryUsableSize, aTotalUsableSize);
// Frame records are totally dependent on vagaries of stack traces, so we
// can't show them in test mode.
if (gMode == Test) {
return;
}
FrameRecordTable frameRecordTable;
(void)frameRecordTable.init(2048);
for (TraceRecordTable::Range r = aTraceRecordTable.all();

View File

@ -0,0 +1,139 @@
#! /usr/bin/python
"""This script takes the file produced by DMD's test mode and checks its
correctness.
It produces the following output files: $TMP/test-{fixed,filtered,diff}.dmd.
It runs the appropriate fix* script to get nice stack traces. It also
filters out platform-specific details from the test output file.
Note: you must run this from the same directory that you invoked DMD's test
mode, otherwise the fix* script will not work properly, because some of the
paths in the test output are relative.
"""
from __future__ import print_function
import os
import platform
import re
import subprocess
import sys
import tempfile
def main():
# Arguments
if (len(sys.argv) != 3):
print("usage:", sys.argv[0], "<srcdir> <test-output>")
sys.exit(1)
srcdir = sys.argv[1]
# Filenames
tempdir = tempfile.gettempdir()
in_name = sys.argv[2]
fixed_name = tempdir + os.sep + "test-fixed.dmd"
filtered_name = tempdir + os.sep + "test-filtered.dmd"
diff_name = tempdir + os.sep + "test-diff.dmd"
expected_name = srcdir + os.sep + \
"memory/replace/dmd/test-expected.dmd"
# Fix stack traces
print("fixing output to", fixed_name)
sysname = platform.system()
if sysname == "Linux":
fix = srcdir + os.sep + "tools/rb/fix-linux-stack.pl"
elif sysname == "Darwin":
fix = srcdir + os.sep + "tools/rb/fix_macosx_stack.py"
else:
print("unhandled platform: " + sysname, file=sys.stderr)
sys.exit(1)
subprocess.call(fix, stdin=open(in_name, "r"),
stdout=open(fixed_name, "w"))
# Filter output
# In stack trace records we filter out all stack frames that contain a
# function whose name doesn't begin with "RunTestMode". And the remaining
# ones have their line numbers omitted, unfortunately, because they are
# often off by one or two and this can vary between builds (e.g. debug vs
# non-debug).
#
# As for stack frame records, we complete eliminate all those that contain
# a function whose name doesn't begin with "RunTestMode", because such
# stack frame records are highly dependent on the exact forms of stack
# traces.
print("filtering output to", filtered_name)
with open(fixed_name, "r") as fin, \
open(filtered_name, "w") as fout:
test_frame_re = re.compile(r".*(RunTestMode\w*).*(DMD.cpp)")
for line in fin:
if re.match(r" (Allocated at|Reported( again)? at)", line):
# It's a stack trace record.
print(line, end='', file=fout)
# Filter the stack trace -- only show RunTestMode* frames.
for frame in fin:
if re.match(r" ", frame):
m = test_frame_re.match(frame)
if m:
print(" ...", m.group(1), "...", m.group(2),
file=fout)
else:
# We're past the stack trace.
print(frame, end='', file=fout)
break
elif re.search("in stack frame record", line):
# Stack frame record. Get the whole thing (we know how many
# lines it has).
line2 = fin.next()
line3 = fin.next()
line4 = fin.next()
frame = fin.next()
line6 = fin.next()
m = test_frame_re.match(frame)
if m:
# This is a stack frame record from RunTestMode* -- print
# it, obscuring record numbers (which vary unpredictably).
print(re.sub(r"record \d+ of \d+", "record M of N", line),
end='', file=fout)
print(line2, end='', file=fout)
print(line3, end='', file=fout)
print(line4, end='', file=fout)
print(" ...", m.group(1), "...", m.group(2), file=fout)
print(line6, end='', file=fout)
else:
# Some line that needs no special handling. Copy it through.
print(line, end='', file=fout)
# Compare with expected output
print("diffing output to", diff_name)
ret = subprocess.call(["diff", "-u", filtered_name, expected_name],
stdout=open(diff_name, "w"))
if ret == 0:
print("test PASSED")
else:
print("test FAILED (did you remember to run this script and Firefox "
"in the same directory?)")
if __name__ == "__main__":
main()

View File

@ -17,12 +17,24 @@ Unreported stack trace records
(none)
------------------------------------------------------------------
Unreported stack frame records
------------------------------------------------------------------
(none)
------------------------------------------------------------------
Once-reported stack trace records
------------------------------------------------------------------
(none)
------------------------------------------------------------------
Once-reported stack frame records
------------------------------------------------------------------
(none)
------------------------------------------------------------------
Summary
------------------------------------------------------------------
@ -47,49 +59,49 @@ Twice-reported: 1 block in stack trace record 1 of 4
80 bytes (79 requested / 1 slop)
0.53% of the heap (0.53% cumulative); 29.41% of twice-reported (29.41% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported again at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Twice-reported: 1 block in stack trace record 2 of 4
80 bytes (78 requested / 2 slop)
0.53% of the heap (1.05% cumulative); 29.41% of twice-reported (58.82% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported again at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Twice-reported: 1 block in stack trace record 3 of 4
80 bytes (77 requested / 3 slop)
0.53% of the heap (1.58% cumulative); 29.41% of twice-reported (88.24% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported again at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Twice-reported: 1 block in stack trace record 4 of 4
32 bytes (30 requested / 2 slop)
0.21% of the heap (1.79% cumulative); 11.76% of twice-reported (100.00% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported again at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Unreported stack trace records
@ -99,25 +111,53 @@ Unreported: 1 block in stack trace record 1 of 4
4,096 bytes (1 requested / 4,095 slop)
27.00% of the heap (27.00% cumulative); 76.88% of unreported (76.88% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 9 blocks in stack trace record 2 of 4
1,008 bytes (900 requested / 108 slop)
6.65% of the heap (33.65% cumulative); 18.92% of unreported (95.80% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 2 blocks in stack trace record 3 of 4
112 bytes (112 requested / 0 slop)
0.74% of the heap (34.39% cumulative); 2.10% of unreported (97.90% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 2 blocks in stack trace record 4 of 4
112 bytes (112 requested / 0 slop)
0.74% of the heap (35.13% cumulative); 2.10% of unreported (100.00% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Unreported stack frame records
------------------------------------------------------------------
Unreported: 1 block from 1 stack trace record in stack frame record M of N
4,096 bytes (1 requested / 4,095 slop)
27.00% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 9 blocks from 1 stack trace record in stack frame record M of N
1,008 bytes (900 requested / 108 slop)
6.65% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 2 blocks from 1 stack trace record in stack frame record M of N
112 bytes (112 requested / 0 slop)
0.74% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 2 blocks from 1 stack trace record in stack frame record M of N
112 bytes (112 requested / 0 slop)
0.74% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Once-reported stack trace records
@ -127,100 +167,146 @@ Once-reported: 1 block in stack trace record 1 of 11
8,192 bytes (4,097 requested / 4,095 slop)
54.01% of the heap (54.01% cumulative); 85.62% of once-reported (85.62% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 2 of 11
512 bytes (512 requested / 0 slop)
3.38% of the heap (57.38% cumulative); 5.35% of once-reported (90.97% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 2 blocks in stack trace record 3 of 11
240 bytes (240 requested / 0 slop)
1.58% of the heap (58.97% cumulative); 2.51% of once-reported (93.48% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 2 blocks in stack trace record 4 of 11
240 bytes (240 requested / 0 slop)
1.58% of the heap (60.55% cumulative); 2.51% of once-reported (95.99% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 5 of 11
96 bytes (96 requested / 0 slop)
0.63% of the heap (61.18% cumulative); 1.00% of once-reported (96.99% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 6 of 11
96 bytes (96 requested / 0 slop)
0.63% of the heap (61.81% cumulative); 1.00% of once-reported (97.99% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 7 of 11
80 bytes (80 requested / 0 slop)
0.53% of the heap (62.34% cumulative); 0.84% of once-reported (98.83% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 8 of 11
80 bytes (80 requested / 0 slop)
0.53% of the heap (62.87% cumulative); 0.84% of once-reported (99.67% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 9 of 11
16 bytes (10 requested / 6 slop)
0.11% of the heap (62.97% cumulative); 0.17% of once-reported (99.83% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 10 of 11
8 bytes (0 requested / 8 slop)
0.05% of the heap (63.03% cumulative); 0.08% of once-reported (99.92% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 11 of 11
8 bytes (0 requested / 8 slop)
0.05% of the heap (63.08% cumulative); 0.08% of once-reported (100.00% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Once-reported stack frame records
------------------------------------------------------------------
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
8,192 bytes (4,097 requested / 4,095 slop)
54.01% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
512 bytes (512 requested / 0 slop)
3.38% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 4 blocks from 3 stack trace records in stack frame record M of N
416 bytes (416 requested / 0 slop)
2.74% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 4 blocks from 3 stack trace records in stack frame record M of N
416 bytes (416 requested / 0 slop)
2.74% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
16 bytes (10 requested / 6 slop)
0.11% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
8 bytes (0 requested / 8 slop)
0.05% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
8 bytes (0 requested / 8 slop)
0.05% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Summary
@ -246,25 +332,25 @@ Twice-reported: 1 block in stack trace record 1 of 2
80 bytes (77 requested / 3 slop)
2.82% of the heap (2.82% cumulative); 90.91% of twice-reported (90.91% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported again at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Twice-reported: 1 block in stack trace record 2 of 2
8 bytes (0 requested / 8 slop)
0.28% of the heap (3.10% cumulative); 9.09% of twice-reported (100.00% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported again at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Unreported stack trace records
@ -274,19 +360,41 @@ Unreported: 9 blocks in stack trace record 1 of 3
1,008 bytes (900 requested / 108 slop)
35.49% of the heap (35.49% cumulative); 48.84% of unreported (48.84% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 6 blocks in stack trace record 2 of 3
528 bytes (528 requested / 0 slop)
18.59% of the heap (54.08% cumulative); 25.58% of unreported (74.42% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 6 blocks in stack trace record 3 of 3
528 bytes (528 requested / 0 slop)
18.59% of the heap (72.68% cumulative); 25.58% of unreported (100.00% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Unreported stack frame records
------------------------------------------------------------------
Unreported: 9 blocks from 1 stack trace record in stack frame record M of N
1,008 bytes (900 requested / 108 slop)
35.49% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 6 blocks from 1 stack trace record in stack frame record M of N
528 bytes (528 requested / 0 slop)
18.59% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 6 blocks from 1 stack trace record in stack frame record M of N
528 bytes (528 requested / 0 slop)
18.59% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Once-reported stack trace records
@ -296,37 +404,65 @@ Once-reported: 1 block in stack trace record 1 of 4
512 bytes (512 requested / 0 slop)
18.03% of the heap (18.03% cumulative); 74.42% of once-reported (74.42% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 2 of 4
80 bytes (79 requested / 1 slop)
2.82% of the heap (20.85% cumulative); 11.63% of once-reported (86.05% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 3 of 4
80 bytes (78 requested / 2 slop)
2.82% of the heap (23.66% cumulative); 11.63% of once-reported (97.67% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Once-reported: 1 block in stack trace record 4 of 4
16 bytes (10 requested / 6 slop)
0.56% of the heap (24.23% cumulative); 2.33% of once-reported (100.00% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Reported at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Once-reported stack frame records
------------------------------------------------------------------
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
512 bytes (512 requested / 0 slop)
18.03% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
80 bytes (79 requested / 1 slop)
2.82% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
80 bytes (78 requested / 2 slop)
2.82% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
Once-reported: 1 block from 1 stack trace record in stack frame record M of N
16 bytes (10 requested / 6 slop)
0.56% of the heap; 0.00% of once-reported
PC is
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Summary
@ -358,43 +494,89 @@ Unreported: ~4 blocks in stack trace record 1 of 7
~512 bytes (~512 requested / ~0 slop)
35.96% of the heap (35.96% cumulative); 35.96% of unreported (35.96% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 1 block in stack trace record 2 of 7
256 bytes (256 requested / 0 slop)
17.98% of the heap (53.93% cumulative); 17.98% of unreported (53.93% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 1 block in stack trace record 3 of 7
144 bytes (144 requested / 0 slop)
10.11% of the heap (64.04% cumulative); 10.11% of unreported (64.04% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: 1 block in stack trace record 4 of 7
128 bytes (128 requested / 0 slop)
8.99% of the heap (73.03% cumulative); 8.99% of unreported (73.03% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: ~1 block in stack trace record 5 of 7
~128 bytes (~128 requested / ~0 slop)
8.99% of the heap (82.02% cumulative); 8.99% of unreported (82.02% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: ~1 block in stack trace record 6 of 7
~128 bytes (~128 requested / ~0 slop)
8.99% of the heap (91.01% cumulative); 8.99% of unreported (91.01% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
Unreported: ~1 block in stack trace record 7 of 7
~128 bytes (~128 requested / ~0 slop)
8.99% of the heap (100.00% cumulative); 8.99% of unreported (100.00% cumulative)
Allocated at
(stack omitted due to test mode)
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Unreported stack frame records
------------------------------------------------------------------
Unreported: ~4 blocks from ~1 stack trace record in stack frame record M of N
~512 bytes (~512 requested / ~0 slop)
35.96% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 1 block from 1 stack trace record in stack frame record M of N
256 bytes (256 requested / 0 slop)
17.98% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 1 block from 1 stack trace record in stack frame record M of N
144 bytes (144 requested / 0 slop)
10.11% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: 1 block from 1 stack trace record in stack frame record M of N
128 bytes (128 requested / 0 slop)
8.99% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: ~1 block from ~1 stack trace record in stack frame record M of N
~128 bytes (~128 requested / ~0 slop)
8.99% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: ~1 block from ~1 stack trace record in stack frame record M of N
~128 bytes (~128 requested / ~0 slop)
8.99% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
Unreported: ~1 block from ~1 stack trace record in stack frame record M of N
~128 bytes (~128 requested / ~0 slop)
8.99% of the heap; 0.00% of unreported
PC is
... RunTestMode ... DMD.cpp
------------------------------------------------------------------
Once-reported stack trace records
@ -402,6 +584,12 @@ Once-reported stack trace records
(none)
------------------------------------------------------------------
Once-reported stack frame records
------------------------------------------------------------------
(none)
------------------------------------------------------------------
Summary
------------------------------------------------------------------