fix accidental corrdump
mdounin at mdounin.ru
Thu Sep 29 19:52:19 UTC 2022
On Thu, Sep 29, 2022 at 04:30:45PM +0800, zjd wrote:
> Actually, I'm not sure where is coredump; So I think
> l->alloc=NULL after free(l-alloc) is reasonable, because
> l->alloc's address can be reused in the pool. Of course,
> memzero after get mem from the pool can be solved about this
> question.But for example, ngx_array_push maybe reuse l->alloc's
> address, and ngx_array_push is not memzero from the start of
> get memory.
> So I think l->alloc=NULL after free(l-alloc) is necessary.
> Thanks for discussing this with me
As previously explained, l->alloc is not used after free().
Clearing unused memory without reasons is certainly not necessary,
much like clearing allocated memory. While it might be helpful to
mitigate various bugs, a better approach would be to find and fix
To find and fix bugs a better approach is usually to set the
unused memory to a pattern which is more likely to cause segfault
if used, such as memset(0x5A). In nginx, various mechanisms to
facilitate memory debugging are available with NGX_DEBUG_MALLOC
and NGX_DEBUG_PALLOC defines, see code for details. Using system
allocator options, Address Sanitizer, and tools like Valgrind also
might be helpful.
More information about the nginx