You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 1, 2020. It is now read-only.
heap_segment* seg = find_segment (interior, FALSE);
if (seg
#ifdef FEATURE_CONSERVATIVE_GC
&& (GCConfig::GetConservativeGC() || interior <= heap_segment_allocated(seg))
#endif
)
{
// If interior falls within the first free object at the beginning of a generation,
// we don't have brick entry for it, and we may incorrectly treat it as on large object heap.
int align_const = get_alignment_constant (heap_segment_read_only_p (seg)
#ifdef FEATURE_CONSERVATIVE_GC
|| (GCConfig::GetConservativeGC() && !heap_segment_uoh_p (seg))
#endif
);
#ifdef FEATURE_CONSERVATIVE_GC
printf("conservative gc\n");
#endif
if (interior >= heap_segment_allocated(seg))
{
printf("interior %08x seg %d heap_segment_allocated(seg) %08x\n", interior, seg, heap_segment_allocated(seg));
}
assert (interior < heap_segment_allocated (seg));
The first if condition has GCConfig::GetConservativeGC() || interior <= heap_segment_allocated(seg) so its possible to get inside with interior > heap_segment_allocated(seg) when GetConservativeGC() is true . A few lines later, there is the assert on interior < heap_segment_allocated (seg) which would fail in this scenario . I'm hitting this assert, so if this assert looks correct for conservative GC then I've got something wrong somewhere else. Can someone confirm this assert is valid for conservative GC?
Thanks.