Hello! 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 bugs. 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. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx mailing list -- nginx@nginx.org To unsubscribe send an email to nginx-le...@nginx.org