<div dir="ltr">Plus: kill -USR2 pid; sleep(2); kill -QUIT oldpid;</div><div class="gmail_extra"><br><div class="gmail_quote">2016-08-30 18:33 GMT+08:00 洪志道 <span dir="ltr"><<a href="mailto:hongzhidao@gmail.com" target="_blank">hongzhidao@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi, guys<div><br></div><div>I found a coredump file generated on production. </div><div><br></div><div><br></div><div>(gdb) print ngx_http_abc_module</div><div>$7 = {ctx_index = 18446744073709551615, index = 18446744073709551615, name = 0x0, spare0 = 0, spare1 = 0, version = 1010001, signature = 0x3520 <Address 0x3520 out of bounds>,</div><div>  ctx = 0x204800, commands = 0x204840, type = 1347703880, init_master = 0, init_module = 0, init_process = 0, init_thread = 0, exit_thread = 0, exit_process = 0,</div><div>  exit_master = 0, spare_hook0 = 0, spare_hook1 = 0, spare_hook2 = 0, spare_hook3 = 0, spare_hook4 = 0, spare_hook5 = 0, spare_hook6 = 0, spare_hook7 = 0} </div><div><br></div><div><br></div><div><div>The ngx_http_'abc'_module is a simple module written by ourself.</div><div>It runed well in the past time, and I just changed the following structure defined in the module.</div></div><div><br></div><div><p><span>typedef struct {</span></p><p><span>    ngx_flag_t         valid;</span></p><p><span>    ...</span></p><p><span>    ngx_uint_t  <span>  </span>   member1;  # added</span></p><p><span>    ngx_uint_t         member2;  # added</span></p><p><span>    ...</span></p><p><span>} ngx_http_abc_ctx_t;</span></p><p><span><br></span></p></div><div>nginx.conf</div><div><br></div><div>load_module  modules/....;</div><div>load_module  modules/ngx_http_abc_module_<wbr>3.so;  # This module is in the last postion, the other modules seems right.</div><div><br></div><div><p>And there is tiny detail. I generate so file named 'ngx_http_abc_module.so', then I copy as ngx_http_abc_module_3.so</p></div><div><br></div><div>And here are short codes about this module.</div><div>







<p><span>static ngx_int_t</span></p>
<p><span>ngx_http_abc_handler(ngx_http_<wbr>request_t *r)</span></p>
<p><span>{</span></p>
<p><span>    ...</span></p>
<p><span>    ngx_http_abc_ctx_t             *ctx;</span></p>
<p><span>    ngx_http_abc_loc_conf_t     *vlcf;</span></p>
<p><span>    vlcf = ngx_http_get_module_loc_conf(<wbr>r, ngx_http_abc_module);</span></p>
<p><span>    if (vlcf->enable == 0) {</span></p>
<p><span>        return NGX_DECLINED;</span></p>
<p><span>    }</span></p>
<p><span>    ctx = ngx_pcalloc(r->pool, sizeof(ngx_http_abc_ctx_t));</span></p>
<p><span>    if (ctx == NULL) {</span></p>
<p><span>        return NGX_ERROR;</span></p>
<p><span>    }</span></p>
<p><span>    ngx_http_set_ctx(r, ctx, ngx_http_abc_module);</span></p>
<p><span>    …</span></p>
<p><span>}</span></p><p><span><br></span></p><p><span>config</span></p><p>ngx_addon_name="ngx_http_abc_<wbr>module"</p><p>ngx_module_type=HTTP</p><p>ngx_module_name=ngx_http_abc_<wbr>module</p><p>ngx_module_incs="$ngx_addon_<wbr>dir"</p><p>ngx_module_srcs="$ngx_addon_<wbr>dir/ngx_http_abc_module.c"</p><p>. auto/module<br></p><p><br></p><p>It's sad that I can't regenerate coredump file now.</p><p>By the way, It's so convinient that use dso instead of upgrading static module.</p><p>Thanks so much.</p><p><br></p><p>B.R.</p></div></div>
</blockquote></div><br></div>