[Serusers] Config issue

Jan Janak jan at iptel.org
Mon Jan 5 21:24:46 CET 2004


It looks like a memory leak to me. Does this happen immediately after
start or do you have to wait for a while ?

It would be great if you could compile ser in debug mode and reproduce
the problem. In this case it should print memory statistics and we will
be able to see from where does the memory leak.

Edit Makefile.def and uncoment -DDBG_QM_MALLOC (line 284)

Then recompile and reinstall ser:

make clean
make all mode=debug
make install

When ser crashes again it should print a lot of text (memory
statistics), please send them to serhelp at lists.iptel.org

Also, are you using 0.8.12 from CVS or tarball ?

  Jan.

On 05-01 19:11, Andrew Delamare wrote:
> Hi all,
> 
> Firstly thanks for the list... i have gotten very far just by reading the mails and replies to and from the list here which has helped much.
> 
> I seem to have hit a dead end though for the moment.
> 
> I have had ser running and am now moving on to add voicemail care of sems and I am hitting issues.
> 
> I am running ser and sems on a FreeBSD box (4.8-RELEASE-p3)
> 
> I have the CVS version of SEMS and 0.8.12 of ser
> 
> I am compiling with GCC 3.0
> 
> but I seem to be having issues.... If I put the DB access to option 0 (modparam("usrloc", "db_mode",   0) SER starts and runs but then I get the following message:
> 
> 
> Jan  5 19:01:33 gateway /usr/local/sbin/ser[5305]: ERROR: receive_msg: no mem for sip_msg
> Jan  5 19:01:33 gateway /kernel: Jan  5 19:01:33 gateway /usr/local/sbin/ser[5305]: ERROR: receive_msg: no mem for sip_msg
> 
> 
> I altered the memory in config.h like what was mentioned but that doesn't seem to help at all... I gave it 20480*1024 and it still came back with the same error. so I guess its not tied to that. I restarted SEMS and nothing changed... I even looked at the semiphore sizes on the server to see if there was anything odd there but it seemed ok but I changed it anyhow.
> 
> So I looked at the cfg again and thought it might be trying to hand back messages to the Database and not getting it and having some art mem error.
> 
> so I changed the setting ( modparam("usrloc", "db_mode", 2)) Now I get a different error.... again to do with memory....
> 
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: voicemail - initializing child 4
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: connect_db(): No enough memory
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: connect_db(): No enough memory
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5448]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5447]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5446]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5445]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5439]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5403]: INFO: SIGCHLD received: we do not worry about grand-children
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5403]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5415]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 /usr/local/sbin/ser[5449]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /kernel:
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: db_init(): Error while trying to connect database
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: db_init(): Error while trying to connect database
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: ERROR; vm_init_child: could not init db mysql://root:dbpassword@localhost/ser
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: ERROR; vm_init_child: could not init db mysql://root:dbpassword@localhost/ser
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: init_mod_child(): Error while initializing module voicemail
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: init_mod_child(): Error while initializing module voicemail
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: init_child failed
> Jan  5 19:08:31 gateway /kernel: Jan  5 19:08:31 gateway /usr/local/sbin/ser[5407]: init_child failed
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5444]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5443]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5442]: INFO: signal 15 received
> Jan  5 19:08:31 gateway /usr/local/sbin/ser[5441]: INFO: signal 15 received
> 
> 
> 
> 
> Here is my config file.
> 
> 
> #
> # $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
> #
> # simple quick-start config script
> #
> 
> # ----------- global configuration parameters ------------------------
> 
> #debug=5         # debug level (cmd line: -dddddddddd)
> #fork=yes
> #log_stderror=no        # (cmd line: -E)
> 
> /* Uncomment these lines to enter debugging mode
> debug=7
> fork=no
> log_stderror=yes
> */
> 
> check_via=no    # (cmd. line: -v)
> dns=no           # (cmd. line: -r)
> rev_dns=no      # (cmd. line: -R)
> #port=5060
> #children=4
> fifo="/tmp/ser_fifo"
> 
> # ------------------ module loading ----------------------------------
> 
> # Uncomment this if you want to use SQL database
> loadmodule "/usr/local/lib/ser/modules/mysql.so"
> 
> loadmodule "/usr/local/lib/ser/modules/sl.so"
> loadmodule "/usr/local/lib/ser/modules/tm.so"
> loadmodule "/usr/local/lib/ser/modules/rr.so"
> loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
> loadmodule "/usr/local/lib/ser/modules/usrloc.so"
> loadmodule "/usr/local/lib/ser/modules/registrar.so"
> 
> # Uncomment this if you want digest authentication
> # mysql.so must be loaded !
> loadmodule "/usr/local/lib/ser/modules/auth.so"
> loadmodule "/usr/local/lib/ser/modules/auth_db.so"
> loadmodule "/usr/local/lib/ser/modules/acc.so"
> loadmodule "/usr/local/lib/ser/modules/msilo.so"
> loadmodule "/usr/local/lib/ser/modules/vm.so"
> 
> # ----------------- setting module-specific parameters ---------------
> 
> # -- voicemail stuff
> 
> modparam("voicemail", "db_url","sql://root:dbpassword@localhost/ser")
> 
> # ------------- tm parameters
> 
> modparam("tm", "fr_timer", 12)
> modparam("tm", "fr_inv_timer", 24)
> 
> # ------------- accounting parameters
> 
> modparam("acc", "log_missed_flag", 3)
> modparam("acc", "log_level", 1)
> modparam("acc", "log_flag", 1)
> 
> # -- usrloc params --
> 
> modparam("usrloc", "db_mode",   0)
> 
> # Uncomment this if you want to use SQL database
> # for persistent storage and comment the previous line
> #modparam("usrloc", "db_mode", 2)
> 
> # -- auth params --
> # Uncomment if you are using auth module
> #
> modparam("auth_db", "calculate_ha1", yes)
> #
> # If you set "calculate_ha1" parameter to yes (which true in this config),
> # uncomment also the following parameter)
> 
> modparam("auth_db", "password_column", "password")
> 
> # -- rr params --
> # add value to ;lr param to make some broken UAs happy
> modparam("rr", "enable_full_lr", 1)
> 
> # -------------------------  request routing logic -------------------
> 
> # main routing logic
> 
> route{
> 
>         # initial sanity checks -- messages with
>         # max_forwards==0, or excessively long requests
>         if (!mf_process_maxfwd_header("10")) {
>                 sl_send_reply("483","Too Many Hops");
>                 break;
>         };
>         if ( msg:len > max_len ) {
>                 sl_send_reply("513", "Message too big");
>                 break;
>         };
>                 # VOICEMAIL ROUTING
> 
>          if (uri == myself) {
> 
>                 # Voicemail specific configuration - begin
> 
>                 if(method=="ACK" || method=="INVITE" || method=="BYE" || method=
> ="REFER"){
> 
>                         if(t_newtran()){
> 
>                                 t_reply("100","Trying -- just wait a minute !");
> 
>                                 if(method=="INVITE" || method=="REFER"){
>                                         log("**************** vm start-begin ***
> ***************\n");
>                                         if( uri =~"conference" ){
> 
> if(!vm("/tmp/am_fifo","conference")){
>                                                         log("could not contact c
> onference server\n");
> t_reply("500","could not contact conference server");
>                                                 };
>                                         }
>                                         else if( uri =~ "echo" ){
> 
> if(!vm("/tmp/am_fifo","echo")){
>                                                         log("could not contact e
> cho\n");
> 
> t_reply("500","could not contact echo");
>                                         };
>                                         }
>                                         else {
> 
> if(!vm("/tmp/am_fifo","voicemail")){
>                                                         log("could not contact v
> oicemail\n");
> 
> t_reply("500","could not contact voicemail");
>                                                 };
>                                         };
>                                         log("**************** vm start-end *****
> *************\n");
>                                         break;
>                                 };
> 
>                                 if(method=="BYE"){
>                                         log("**************** vm end/refer - beg
> in ******************\n");
>                                         if(!vm("/tmp/am_fifo","bye")){
>                                                 log("could not contact the media
>  server\n");
>                                                 t_reply("500","could not contact
>  the media server");
>                                         };
>                                         log("**************** vm end/refer - end
>  ********************\n");
>                                         break;
>                                 };
>                         }
>                         else {
>                              log("could not create new transaction\n");
>                              sl_send_reply("500","could not createnewtransaction
> ");
>                         };
>                 };
> 
>                 # Voicemail specific configuration - end
>                 }
>         # we record-route all messages -- to make sure that
>         # subsequent messages will go through our proxy; that's
>         # particularly good if upstream and downstream entities
>         # use different transport protocol
>         record_route();
>         # loose-route processing
>         if (loose_route()) {
>                 t_relay();
>                 break;
>         };
> #       # Make MSN Messenger happy...
> #       if (method=="REGISTER") {
> #               sl_send_reply("200","ok");
> #               break;
> #       };
>         # if the request is for other domain use UsrLoc
>         # (in case, it does not work, use the following command
>         # with proper names and addresses in it)
>         if (uri=~amadeo.co.uk) {
> 
>                 if (method=="REGISTER") {
> 
> # Uncomment this if you want to use digest authentication
>                         if (!www_authorize("amadeo.co.uk", "subscriber")) {
>                                 www_challenge("amadeo.co.uk", "0");
>                                 break;
>                         };
>                         save("location");
>                         break;
>                 };
> lookup("aliases");
>                 # native SIP destinations are handled using our USRLOC DB
>                 if (!lookup("location")) {
>                         sl_send_reply("404", "Not Found");
>                         break;
>                 };
> 
>         };
>         # forward to current uri now; use stateful forwarding; that
>         # works reliably even if we forward from TCP to UDP
>         if (!t_relay()) {
>                 sl_reply_error();
>         };
> 
> 
> Any thoughts gratefully accpted.
> 
> 
> 
> Regards
> --
> Andrew Delamare
> Amadeo Nerworks Ltd
> 
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers




More information about the sr-users mailing list