mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-06 15:29:31 +03:00
fix segment defined memory for valgrind
This commit is contained in:
parent
b3176ada74
commit
6f31115c7f
1 changed files with 9 additions and 2 deletions
|
@ -874,11 +874,18 @@ static mi_segment_t* mi_segment_alloc(size_t required, size_t page_alignment, mi
|
||||||
if (segment == NULL) return NULL;
|
if (segment == NULL) return NULL;
|
||||||
|
|
||||||
// zero the segment info? -- not always needed as it may be zero initialized from the OS
|
// zero the segment info? -- not always needed as it may be zero initialized from the OS
|
||||||
|
mi_track_mem_defined(segment, offsetof(mi_segment_t, next)); // needed for valgrind
|
||||||
mi_atomic_store_ptr_release(mi_segment_t, &segment->abandoned_next, NULL); // tsan
|
mi_atomic_store_ptr_release(mi_segment_t, &segment->abandoned_next, NULL); // tsan
|
||||||
if (!is_zero) {
|
{
|
||||||
ptrdiff_t ofs = offsetof(mi_segment_t, next);
|
ptrdiff_t ofs = offsetof(mi_segment_t, next);
|
||||||
size_t prefix = offsetof(mi_segment_t, slices) - ofs;
|
size_t prefix = offsetof(mi_segment_t, slices) - ofs;
|
||||||
memset((uint8_t*)segment+ofs, 0, prefix + sizeof(mi_slice_t)*(segment_slices+1)); // one more
|
size_t zsize = prefix + sizeof(mi_slice_t) * (segment_slices + 1); // one more
|
||||||
|
if (!is_zero) {
|
||||||
|
memset((uint8_t*)segment + ofs, 0, zsize);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mi_track_mem_defined((uint8_t*)segment + ofs, zsize); // todo: somehow needed for valgrind?
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
segment->commit_mask = commit_mask; // on lazy commit, the initial part is always committed
|
segment->commit_mask = commit_mask; // on lazy commit, the initial part is always committed
|
||||||
|
|
Loading…
Add table
Reference in a new issue