Skip to content

Commit 7fb4a3c

Browse files
authored
Fix nongcheap test (#89711)
1 parent 8c111a6 commit 7fb4a3c

File tree

1 file changed

+47
-40
lines changed

1 file changed

+47
-40
lines changed

src/tests/profiler/native/nongcheap/nongcheap.cpp

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ HRESULT NonGcHeapProfiler::GarbageCollectionFinished()
6060

6161
_garbageCollections++;
6262

63-
std::vector<ULONG> segment_starts;
64-
std::vector<ULONG> segment_ends;
63+
std::vector<uint64_t> segment_starts;
64+
std::vector<uint64_t> segment_ends;
6565
const int MAX_SEGMENTS = 16;
6666
COR_PRF_NONGC_HEAP_RANGE nongc_segments[MAX_SEGMENTS];
6767
COR_PRF_GC_GENERATION_RANGE gc_segments[MAX_SEGMENTS];
@@ -70,94 +70,101 @@ HRESULT NonGcHeapProfiler::GarbageCollectionFinished()
7070
HRESULT hr = pCorProfilerInfo->GetNonGCHeapBounds(MAX_SEGMENTS, &segCount, nongc_segments);
7171
if (FAILED(hr))
7272
{
73-
printf("GetNonGCHeapBounds returned an error\n!");
73+
printf("FAIL: GetNonGCHeapBounds returned an error\n!");
7474
_failures++;
7575
}
7676
else if (segCount == 0 || segCount > MAX_SEGMENTS)
7777
{
78-
printf("GetNonGCHeapBounds: invalid segCount (%u)\n!", segCount);
78+
printf("FAIL: GetNonGCHeapBounds: invalid segCount (%u)\n!", (uint32_t)segCount);
7979
_failures++;
8080
}
8181
else
8282
{
8383
// Save very first object ID to compare with EnumerateNonGCObjects
8484
firstObj = nongc_segments[0].rangeStart;
8585

86-
printf("\nGetNonGCHeapBounds (segCount = %u):\n", segCount);
87-
for (ULONG i = 0; i < segCount; i++)
86+
printf("\nGetNonGCHeapBounds (segCount = %u):\n", (uint32_t)segCount);
87+
for (uint32_t i = 0; i < (uint32_t)segCount; i++)
8888
{
8989
printf("\tseg#%u, rangeStart=%p, rangeLength=%u, rangeLengthReserved=%u\n",
90-
i, (void*)nongc_segments[i].rangeStart, (ULONG)nongc_segments[i].rangeLength, (ULONG)nongc_segments[i].rangeLengthReserved);
90+
i, (void*)nongc_segments[i].rangeStart, (uint32_t)nongc_segments[i].rangeLength, (uint32_t)nongc_segments[i].rangeLengthReserved);
9191

92-
if ((ULONG)nongc_segments[i].rangeLength > (ULONG)nongc_segments[i].rangeLengthReserved)
92+
if (nongc_segments[i].rangeLength > nongc_segments[i].rangeLengthReserved)
9393
{
94-
printf("GetNonGCHeapBounds: rangeLength > rangeLengthReserved");
94+
printf("FAIL: GetNonGCHeapBounds: rangeLength > rangeLengthReserved");
9595
_failures++;
9696
}
9797

9898
if (!nongc_segments[i].rangeStart)
9999
{
100-
printf("GetNonGCHeapBounds: rangeStart is null");
100+
printf("FAIL: GetNonGCHeapBounds: rangeStart is null");
101101
_failures++;
102102
}
103-
segment_starts.emplace_back((ULONG)nongc_segments[i].rangeStart);
104-
segment_ends.emplace_back((ULONG)nongc_segments[i].rangeStart + (ULONG)nongc_segments[i].rangeLengthReserved);
103+
segment_starts.push_back(nongc_segments[i].rangeStart);
104+
segment_ends.push_back(nongc_segments[i].rangeStart + nongc_segments[i].rangeLengthReserved);
105105
}
106106
printf("\n");
107107
}
108108
hr = pCorProfilerInfo->GetGenerationBounds(MAX_SEGMENTS, &segCount, gc_segments);
109109
if (FAILED(hr))
110110
{
111-
printf("GetGenerationBounds returned an error\n!");
111+
printf("FAIL: GetGenerationBounds returned an error\n!");
112112
_failures++;
113113
}
114114
else if (segCount == 0 || segCount > MAX_SEGMENTS)
115115
{
116-
printf("GetGenerationBounds: invalid segCount (%u)\n!", segCount);
116+
printf("FAIL: GetGenerationBounds: invalid segCount (%u)\n!", (uint32_t)segCount);
117117
_failures++;
118118
}
119119
else
120120
{
121-
printf("\nGetGenerationBounds (segCount = %u):\n", segCount);
122-
for (ULONG i = 0; i < segCount; i++)
121+
printf("\nGetGenerationBounds (segCount = %u):\n", (uint32_t)segCount);
122+
for (uint64_t i = 0; i < segCount; i++)
123123
{
124124
printf("\tseg#%u, rangeStart=%p, rangeLength=%u, rangeLengthReserved=%u\n",
125-
i, (void*)gc_segments[i].rangeStart, (ULONG)gc_segments[i].rangeLength, (ULONG)gc_segments[i].rangeLengthReserved);
125+
(uint32_t)i, (void*)gc_segments[i].rangeStart, (uint32_t)gc_segments[i].rangeLength, (uint32_t)gc_segments[i].rangeLengthReserved);
126126

127-
if ((ULONG)gc_segments[i].rangeLength > (ULONG)gc_segments[i].rangeLengthReserved)
127+
if (gc_segments[i].rangeLength > gc_segments[i].rangeLengthReserved)
128128
{
129-
printf("GetGenerationBounds: rangeLength > rangeLengthReserved");
129+
printf("FAIL: GetGenerationBounds: rangeLength > rangeLengthReserved");
130130
_failures++;
131131
}
132132

133133
if (!gc_segments[i].rangeStart)
134134
{
135-
printf("GetGenerationBounds: rangeStart is null");
135+
printf("FAIL: GetGenerationBounds: rangeStart is null");
136136
_failures++;
137137
}
138-
segment_starts.emplace_back((ULONG)gc_segments[i].rangeStart);
139-
segment_ends.emplace_back((ULONG)gc_segments[i].rangeStart + (ULONG)gc_segments[i].rangeLengthReserved);
138+
segment_starts.push_back(gc_segments[i].rangeStart);
139+
segment_ends.push_back(gc_segments[i].rangeStart + gc_segments[i].rangeLengthReserved);
140140
}
141141
printf("\n");
142142
}
143143
sort(segment_starts.begin(), segment_starts.end());
144144
sort(segment_ends.begin(), segment_ends.end());
145-
for (size_t i = 0; i < segment_starts.size() - 1; i++)
145+
146+
// Do segments overlap?
147+
if (segment_starts.size() > 1)
146148
{
147-
if (segment_starts[i] == segment_starts[i+1])
149+
for (size_t i = 0; i < segment_starts.size() - 1; i++)
148150
{
149-
printf("Duplicated segment starts");
150-
_failures++;
151-
}
152-
if (segment_ends[i] == segment_ends[i+1])
153-
{
154-
printf("Duplicated segment ends");
155-
_failures++;
156-
}
157-
if (segment_ends[i] > segment_starts[i+1])
158-
{
159-
printf("Overlapping segments\n");
160-
_failures++;
151+
printf("inspecting segment %d [rangeStart=%p rangeEnd=%p]\n", (int)i, (void*)segment_starts[i], (void*)segment_ends[i]);
152+
153+
if (segment_starts[i] == segment_starts[i+1])
154+
{
155+
printf("FAIL: Duplicated segment starts");
156+
_failures++;
157+
}
158+
if (segment_ends[i] == segment_ends[i+1])
159+
{
160+
printf("FAIL: Duplicated segment ends");
161+
_failures++;
162+
}
163+
if (segment_ends[i] > segment_starts[i+1])
164+
{
165+
printf("FAIL: Overlapping segments\n");
166+
_failures++;
167+
}
161168
}
162169
}
163170

@@ -167,7 +174,7 @@ HRESULT NonGcHeapProfiler::GarbageCollectionFinished()
167174
hr = pCorProfilerInfo->EnumerateNonGCObjects(&pEnum);
168175
if (FAILED(hr))
169176
{
170-
printf("EnumerateNonGCObjects returned an error\n!");
177+
printf("FAIL: EnumerateNonGCObjects returned an error\n!");
171178
_failures++;
172179
}
173180
else
@@ -181,7 +188,7 @@ HRESULT NonGcHeapProfiler::GarbageCollectionFinished()
181188
{
182189
if (firstObj != obj)
183190
{
184-
printf("EnumerateNonGCObjects: firstObj != obj\n!");
191+
printf("FAIL: EnumerateNonGCObjects: firstObj != obj\n!");
185192
_failures++;
186193
}
187194
}
@@ -192,7 +199,7 @@ HRESULT NonGcHeapProfiler::GarbageCollectionFinished()
192199
hr = pCorProfilerInfo->IsFrozenObject(obj, &isFrozen);
193200
if (FAILED(hr) || !isFrozen)
194201
{
195-
printf("EnumerateNonGCObjects: IsFrozenObject failed\n!");
202+
printf("FAIL: EnumerateNonGCObjects: IsFrozenObject failed\n!");
196203
_failures++;
197204
}
198205

@@ -202,7 +209,7 @@ HRESULT NonGcHeapProfiler::GarbageCollectionFinished()
202209

203210
if (nonGcObjectsEnumerated != _nonGcHeapObjects)
204211
{
205-
printf("objectAllocated(%d) != _nonGcHeapObjects(%d)\n!", nonGcObjectsEnumerated, (int)_nonGcHeapObjects);
212+
printf("FAIL: objectAllocated(%d) != _nonGcHeapObjects(%d)\n!", nonGcObjectsEnumerated, (int)_nonGcHeapObjects);
206213
_failures++;
207214
}
208215
}

0 commit comments

Comments
 (0)