<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Probably not the popular opinion, but I don't think any modules
      are "generally" important enough to abort Asterisk start-up.  For
      any module that is important enough for a system the admin can use
      'require' or 'preload-require' settings in modules.conf.  The
      exception to this would be when a module creates an unstable state
      by being half-loaded (example: global symbols exported that will
      crash if called).<br>
    </p>
    <p>On the 'core' side of things, anytime main/loader.c aborts
      start-up it should display an error message saying which module
      returned AST_MODULE_LOAD_FAILURE and make sure the logger gets
      flushed.  Even if every module gives a reason it is failing the
      module loader should still print a message (two errors on abort
      are better than possibly missing one).<br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 04/05/2017 04:43 PM, George Joseph
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAP=uFEtaL=Sy--8HsTBxWrY5P1k-Wc7j7auaW4DAt2ys_6C-QQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>Over the years I've been frustrated at times where Asterisk
          fails to start for absolutely no (apparent) reason.  No error
          message, no trap, nothing.  It just ends.  Every case of this
          I've tracked down has been the result of a module
          returning AST_MODULE_LOAD_FAILURE when it encounters a problem
          but not bothering to print an error first.   If you don't know
          already, AST_MODULE_LOAD_FAILURE tells asterisk to <b>stop
            loading and exit</b>.  What the module should have done was
          actually print an error and return AST_MODULE_LOAD_DECLINE
          which just tells asterisk that the module couldn't load.</div>
        <div><br>
        </div>
        <div>So now I'm doing an audit of module return codes to see
          which call FAILURE vs DECLINE and found the modules below all
          call FAILURE.</div>
        <div><br>
        </div>
        <div>The big question is...  Exactly which modules are so
          critical to asterisk that asterisk should exit if the module
          couldn't load?  Surely not all 103 modules listed below.  If
          we can agree on the ones that really <i>should</i> call
          FAILURE, I'll update those with error messages, then change
          the rest to DECLINE and add error messages as needed.</div>
        <div><br>
        </div>
        <div>Reply with the list intact.  Don't add, remove, split or
          re-order the lines.  Just stick an "F " before the modules you
          think should remain failure.</div>
        <div><br>
        </div>
        Modules returning FAILURE:
        <div><br clear="all">
          <div>
            <div>./addons/app_mysql.c</div>
            <div>./addons/cdr_mysql.c</div>
            <div>./addons/chan_mobile.c</div>
            <div>./apps/app_adsiprog.c</div>
            <div>./apps/app_agent_pool.c</div>
            <div>./apps/app_alarmreceiver.c</div>
            <div>./apps/app_amd.c</div>
            <div>./apps/app_authenticate.c</div>
            <div>./apps/app_cdr.c</div>
            <div>./apps/app_confbridge.c</div>
            <div>./apps/app_festival.c</div>
            <div>./apps/app_followme.c</div>
            <div>./apps/app_forkcdr.c</div>
            <div>./apps/app_meetme.c</div>
            <div>./apps/app_queue.c</div>
            <div>./apps/app_skel.c</div>
            <div>./apps/app_voicemail.c</div>
            <div>./cdr/cdr_custom.c</div>
            <div>./cel/cel_custom.c</div>
            <div>./cel/cel_odbc.c</div>
            <div>./channels/chan_alsa.c</div>
            <div>./channels/chan_console.c</div>
            <div>./channels/chan_dahdi.c</div>
            <div>./channels/chan_iax2.c</div>
            <div>./channels/chan_mgcp.c</div>
            <div>./channels/chan_misdn.c</div>
            <div>./channels/chan_motif.c</div>
            <div>./channels/chan_nbs.c</div>
            <div>./channels/chan_oss.c</div>
            <div>./channels/chan_phone.c</div>
            <div>./channels/chan_pjsip.c</div>
            <div>./channels/chan_sip.c</div>
            <div>./channels/chan_skinny.c</div>
            <div>./channels/chan_unistim.c</div>
            <div>./channels/chan_vpb.cc</div>
            <div>./codecs/codec_a_mu.c</div>
            <div>./codecs/codec_adpcm.c</div>
            <div>./codecs/codec_alaw.c</div>
            <div>./codecs/codec_g722.c</div>
            <div>./codecs/codec_g726.c</div>
            <div>./codecs/codec_gsm.c</div>
            <div>./codecs/codec_ilbc.c</div>
            <div>./codecs/codec_lpc10.c</div>
            <div>./codecs/codec_resample.c</div>
            <div>./codecs/codec_ulaw.c</div>
            <div>./formats/format_g723.c</div>
            <div>./formats/format_g726.c</div>
            <div>./formats/format_g729.c</div>
            <div>./formats/format_gsm.c</div>
            <div>./formats/format_h263.c</div>
            <div>./formats/format_h264.c</div>
            <div>./formats/format_ilbc.c</div>
            <div>./formats/format_jpeg.c</div>
            <div>./formats/format_ogg_vorbis.c</div>
            <div>./formats/format_pcm.c</div>
            <div>./formats/format_sln.c</div>
            <div>./formats/format_vox.c</div>
            <div>./formats/format_wav.c</div>
            <div>./formats/format_wav_gsm.c</div>
            <div>./funcs/func_cdr.c</div>
            <div>./main/loader.c</div>
            <div>./pbx/pbx_dundi.c</div>
            <div>./pbx/pbx_loopback.c</div>
            <div>./pbx/pbx_realtime.c</div>
            <div>./pbx/pbx_spool.c</div>
            <div>./res/res_pjsip/config_transport.c</div>
            <div>./res/res_ari.c</div>
            <div>./res/res_ari_events.c</div>
            <div>./res/res_ari_model.c</div>
            <div>./res/res_calendar.c</div>
            <div>./res/res_chan_stats.c</div>
            <div>./res/res_clialiases.c</div>
            <div>./res/res_config_ldap.c</div>
            <div>./res/res_config_sqlite.c</div>
            <div>./res/res_config_sqlite3.c</div>
            <div>./res/res_curl.c</div>
            <div>./res/res_endpoint_stats.c</div>
            <div>./res/res_fax.c</div>
            <div>./res/res_hep_rtcp.c</div>
            <div>./res/res_http_websocket.c</div>
            <div>./res/res_musiconhold.c</div>
            <div>./res/res_odbc.c</div>
            <div>./res/res_phoneprov.c</div>
            <div>./res/res_pjsip_nat.c</div>
            <div>./res/res_pjsip_one_touch_record_info.c</div>
            <div>./res/res_pjsip_outbound_publish.c</div>
            <div>./res/res_pjsip_outbound_registration.c</div>
            <div>./res/res_pjsip_sdp_rtp.c</div>
            <div>./res/res_pjsip_send_to_voicemail.c</div>
            <div>./res/res_pjsip_t38.c</div>
            <div>./res/res_smdi.c</div>
            <div>./res/res_snmp.c</div>
            <div>./res/res_stasis.c</div>
            <div>./res/res_stasis_device_state.c</div>
            <div>./res/res_stasis_playback.c</div>
            <div>./res/res_stasis_recording.c</div>
            <div>./res/res_stasis_test.c</div>
            <div>./res/res_statsd.c</div>
            <div>./res/res_timing_kqueue.c</div>
            <div>./res/res_xmpp.c</div>
            <div>./res/res_pjsip_pubsub.c</div>
            <div>./tests/test_bucket.c</div>
            <div>./tests/test_channel_feature_hooks.c</div>
          </div>
          <div><br>
          </div>
          -- <br>
          <div class="gmail_signature">
            <div dir="ltr"><span style="font-size:12.8px">George Joseph</span><br
                style="font-size:12.8px">
              <span style="font-size:12.8px">Digium, Inc. | Software
                Developer</span><span style="font-size:12.8px"><br>
                445 Jan Davis Drive NW - Huntsville, AL 35806 - US<br>
              </span><span style="font-size:12.8px">Check us out at: </span><a
                moz-do-not-send="true" href="http://www.digium.com/"
                rel="noreferrer"
                style="color:rgb(17,85,204);font-size:12.8px"
                target="_blank">www.digium.com</a><span
                style="font-size:12.8px"> & </span><a
                moz-do-not-send="true" href="http://www.asterisk.org/"
                rel="noreferrer"
                style="color:rgb(17,85,204);font-size:12.8px"
                target="_blank">www.asterisk.org</a><br>
              <div><br>
              </div>
            </div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
    </blockquote>
    <br>
  </body>
</html>