<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/4501/">https://reviewboard.asterisk.org/r/4501/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On March 15th, 2015, 5:54 a.m. CDT, <b>Corey Farrell</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/4501/diff/1/?file=72410#file72410line1012" style="color: black; font-weight: bold; text-decoration: underline;">/branches/13/main/core_local.c</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">static void local_shutdown(void)</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1012</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="n">it</span> <span class="o">=</span> <span class="n">ao2_iterator_init</span><span class="p">(</span><span class="n">locals</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1012</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="n">it</span> <span class="o">=</span> <span class="n">ao2_iterator_init</span><span class="p">(</span><span class="n">locals</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1013</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="k">while</span> <span class="p">((</span><span class="n">p</span> <span class="o">=</span> <span class="n">ao2_iterator_next</span><span class="p">(</span><span class="o">&</span><span class="n">it</span><span class="p">)))</span> <span class="p">{</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1013</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="k">while</span> <span class="p">((</span><span class="n">p</span> <span class="o">=</span> <span class="n">ao2_iterator_next</span><span class="p">(</span><span class="o">&</span><span class="n">it</span><span class="p">)))</span> <span class="p">{</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1014</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="o">-></span><span class="n">base</span><span class="p">.</span><span class="n">owner</span><span class="p">)</span> <span class="p">{</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1014</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="k">if</span> <span class="p">(</span><span class="n">p</span><span class="o">-></span><span class="n">base</span><span class="p">.</span><span class="n">owner</span><span class="p">)</span> <span class="p">{</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1015</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="tb">  </span><span class="n">ast_softhangup</span><span class="p">(</span><span class="n">p</span><span class="o">-></span><span class="n">base</span><span class="p">.</span><span class="n">owner</span><span class="p">,</span> <span class="n">AST_SOFTHANGUP_APPUNLOAD</span><span class="p">);</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1015</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="tb">  </span><span class="n">ast_softhangup</span><span class="p">(</span><span class="n">p</span><span class="o">-></span><span class="n">base</span><span class="p">.</span><span class="n">owner</span><span class="p">,</span> <span class="n">AST_SOFTHANGUP_APPUNLOAD</span><span class="p">);</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1016</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="p">}</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1016</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="p">}</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1017</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="n">ao2_ref</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1017</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="n">ao2_ref</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1018</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="p">}</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1018</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="p">}</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#f0f0f0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">1019</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="n">ao2_iterator_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">it</span><span class="p">);</span></pre></td>
    <th bgcolor="#f0f0f0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">1019</font></th>
    <td bgcolor="#ffffff" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="n">ao2_iterator_destroy</span><span class="p">(</span><span class="o">&</span><span class="n">it</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This was an inconsistency with previous versions and all other channel drivers - nothing else hangs up during shutdown 'now'.  That said it's how things currently work in 13, so maybe a separate function should ast_register_atexit to hangup all local channels?</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">All channels are hungup during shutdown 'now'.  Look at asterisk.c:can_safely_quit().  In v11, that calls ast_begin_shutdown(1) which sets the soft hangup flag on all channels.  In v13, that calls ast_softhangup_all().

The code you point out here can be removed as a leftover from moving chan_local.c into the core.  chan_local.c did this when it unloaded to make sure that there were no local channels left.  It's kind of useless there too because the module is reffed on channel creation and if there ever are any local channels they wouldn't have a chance to go away before the module unload cleanup completed and hilarity ensues.</pre>
<br />




<p>- rmudgett</p>


<br />
<p>On March 15th, 2015, 5:33 a.m. CDT, Corey Farrell wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By Corey Farrell.</div>


<p style="color: grey;"><i>Updated March 15, 2015, 5:33 a.m.</i></p>







<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-24142">ASTERISK-24142</a>, 

 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-24683">ASTERISK-24683</a>, 

 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-24805">ASTERISK-24805</a>, 

 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-24881">ASTERISK-24881</a>


</div>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
Asterisk
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">We've had many issues related to "core stop now" or "core restart now" causing segmentation faults.  The solution to this is to change almost everything to use ast_register_cleanup.

Exceptions:
CDR: Flush records.
res_musiconhold: Kill external applications.
AstDB: Close the DB.
canary_exit: Kill canary process.

Although some changes from ast_register_atexit to ast_register_cleanup are not strictly necessary, the point is for nothing to use ast_register_atexit except where required.  For this reason the change is across the board.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Compiled, started and ran 'core stop now'.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/branches/13/main/xmldoc.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/utils.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/udptl.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/timing.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/threadstorage.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/taskprocessor.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/stun.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/stasis.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/sounds_index.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/sorcery.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/rtp_engine.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/pickup.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/pbx.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/message.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/manager_system.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/manager_mwi.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/manager_endpoints.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/manager_channels.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/manager_bridges.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/manager.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/indications.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/image.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/http.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/format_cache.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/format.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/file.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/features.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/dnsmgr.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/data.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/core_local.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/config_options.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/config.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/codec.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/cli.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/channel.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/cel.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/ccss.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/bridge.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/astobj2_container.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/astobj2.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/astmm.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/astfd.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/asterisk.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/main/aoc.c <span style="color: grey">(432991)</span></li>

 <li>/branches/13/include/asterisk.h <span style="color: grey">(432991)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/4501/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>








  </div>
 </body>
</html>