nginx dso coredump
mdounin at mdounin.ru
Tue Aug 30 13:05:05 UTC 2016
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.
> "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
> 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.
More information about the nginx-devel