nginx dso coredump

Maxim Dounin mdounin at mdounin.ru
Tue Aug 30 13:05:05 UTC 2016


Hello!

On Tue, Aug 30, 2016 at 08:46:42PM +0800, 洪志道 wrote:

> Thanks a lot for your reply.
> 
> First, we want to manage the module versions, such as
> ngx_http_abc_module_1.so, ngx_http_abc_module_2.so.
> Maybe you can share a better way.
> 
> Second:
> "Note that when writing module *.so files care should be taken to
> not modify contents of files currently loaded" -- I get, but we didn't.
> 
> 
> The above problem I described is:
> 
> load_module  modules/ngx_http_abc_module_2.so;  # it runs well before
> upgrading
> 
> 
> Then we upgrade module named ngx_http_abc_module_3.so
> [ make install: generate new file ngx_http_abc_module.so; cp
> ngx_http_abc_module.so ngx_http_abc_module_3.so]
> 
> Then change config
> 
> load_module modules/ngx_http_abc_module_3.so;
> 
> Finally we upgrade nginx: -USR2 && sleep && -QUIT old

As long as you use upgrade via USR2 signal this process should be 
fine.  Note though, that if you'll try to reload a configuration 
instead of upgrade, you'll likely get a segmentation fault as 
well, since there will be multiple conflicting symbols for your 
module loaded at the same time.

Overral I would recommend you to avoid using such distinct *.so 
names as it looks very fragile.

If you want to store module version somewhere, consider just 
adding a symbol with appropriate information to the module itself.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx-devel mailing list