missing module context

Valentin V. Bartenev ne at vbart.ru
Tue Jul 10 10:17:11 UTC 2012


On Tuesday 10 July 2012 12:31:45 Anatoli Marinov wrote:
> Hello Colleagues,
> I am working on a project, that uses nginx as http proxy and I have
> written many nginx modules. For several months till now I am looking for
> a bug in one of my modules but I cannot find it. It appears very rare
> but even so it should be fixed.
> 
> I added many log messages to debug the issue. I found that some time the
> module context is null even it has been set before.  I am using context
> functions as usual:
> 1. In rewrite phase :
> ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_my_ctx_t));
> ngx_http_set_ctx(r, ctx, ngx_http_my_module);
> 
> 2. In log phase I am trying to get back my context :
> ctx = ngx_http_get_module_ctx(r, ngx_http_my_module);
> In this place ctx is NULL.
> 
> What is your opinion? Am am using this sequence on many places and it
> works as I expected but in this modules sometimes it fails.
> I think there could be a memory corruption issue. There could be a code
> that may write on request's context array and overwrite the context
> pointer. Is there a way to check this? Nginx uses its own memory pool
> system and tools like valgrind is not longer usable.
> 
> Please advise me how to find this issue...
> 
> All ideas are welcome!
> Best Regards
> 

The request context doesn't shared between subrequests. If you set ctx for 
subrequest and then trying to retrieve it for main request you will get NULL.

 wbr, Valentin V. Bartenev



More information about the nginx-devel mailing list