fix accidental corrdump
mdounin at mdounin.ru
Wed Sep 28 15:57:23 UTC 2022
On Wed, Sep 28, 2022 at 10:56:15AM +0800, zjd wrote:
> my module is such:
> The pool is created with ngx_create_pool in
> module_init_process; I get momery from the pool in the start of
> each request, and then use ngx_reset_pool in the end of each
> The ngx_reset_pool take pool->large each alloc pointer return
> to pool, and each alloc pointer is wild pointer.
> And When another get momery from the pool in next request or
> next next request..., I maybe get wild pointer address and
> access inaccessible addresses, and then coredump.
> maybe the describe is simple in last mail.
Ok, so from your description you are getting segfaults, and you
don't know why.
Note that the ngx_reset_pool() function clears pool->large, and
also frees all the ngx_pool_large_t structures (since it resets
all pool blocks). That is, l->alloc you are clearing in your
patch is not expected to be used anywhere. If clearing it helps,
this suggests that there is a bug in your module which results in
this freed memory to be used somehow.
While clearing l->alloc might appear to help, most likely it is
just hiding a bug in your module. Correct solution would be to
find the bug in your module and fix it.
More information about the nginx