Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce a stricter debugging allocator for testing #6811

Merged
merged 5 commits into from
May 16, 2024

Conversation

ethomson
Copy link
Member

Introduce a new debugging allocator that:

  1. internally tracks allocation size — this is helpful both to be able to track internally, but also to ensure that the pointer returned from the custom malloc is not the same pointer that the underlying system malloc used, and is therefore incompatible with the system free. This helps catch inconsistent use of system malloc and the libgit2-configured malloc.
  2. forces realloc to always reallocate (it will explicitly malloc, memcpy, and free the previous pointer)

Also, update some inconsistent use of allocators caught by 1.

Instead of tweaking the `stdalloc` allocator when
`GIT_DEBUG_STRICT_ALLOC` is defined, actually create a debugging
allocator. This allows us to ensure that we are strict about things like
not expecting `malloc(0)` to do something useful, but we can also
introduce an excessively pedantic `realloc` implementation that _always_
creates a new buffer, throws away its original `ptr`, and overwrites the
data that's there with garbage. This may be helpful to identify places
that make assumptions about realloc.
realpath(3) _may_ allocate strings (if the second param is NULL) using
the system allocator. However, callers need an assurance that they can
free memory using git__free. If we made realpath do an allocation, then
make sure that we strdup it into our allocator's memory.

More importantly, avoid this behavior by always providing a buffer to
p_realpath invocations.
Instead of setting the allocator to stdalloc, just pass `NULL`, in case
we're running with the debug allocator.
@ethomson ethomson merged commit 6c5520f into main May 16, 2024
19 checks passed
@ethomson ethomson deleted the ethomson/test_allocator branch May 16, 2024 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant