Re: [PATCH 0/4] reftable: fix out-of-memory errors on NonStop
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 21, 2024, 16:52 UTC
- Message-ID
- <xmqqv7vdc726.fsf@gitster.g>
- In-Reply-To
- <20241221-b4-pks-reftable-oom-fix-without-readers-v1-0-12db83a3267c@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
> this small patch series fixes out-of-memory errors on NonStop with the > reftable backend. These errors are caused by zero-sized allocations, > which return `NULL` pointers on NonStop.
Interesting. Git side has long been aware of this issue, but because being able to get something out of zero-byte allocation was somehow deemed so useful (and I do not either remember the reasons, nor if I were asked today, I do not know if I agree), our xmalloc() and friends ensure that we never return NULL for 0-sized allocation.
I looked at the patches the places they touch and they are sensible changes to avoid asking 0-sized allocations. Which is the opposite approach from what Git takes *and* which may be more sensible. The callers should know better what they want to do when they have zero sized request. E.g., if they have 0 records to write to in a format that has num-records followed by an array of entries, they may want to make it a no-op, or they may want to explicitly write 0 followed by no entries, to record the fact that such a request was made.
One possible downside of the approach is that all API functions must be vetted for their response to a request that might end up leading to a zero-sized allocation and told to special case such a request, but that is something better donw sooner rather than later.
Will queue. Thanks.