[OpenSIPS-Users] Possible dispatcher module memory leak

Fox, Chad CDFox at west.com
Wed Dec 17 23:06:15 CET 2008


We have experienced an issue where a device in our dispatcher list
becomes unavailable and the dispatcher has to begin probing that
resource.

We noticed that the memory grows at a constant rate after this happens
and until the device is brought back online.

Inspecting the memory allocated by shm_malloc we see that the leaked
memory is made up of dlg_t objects and strings allocated via
shm_str_dup.

Looking at the ds_check_timer() function we see where the dlg_t objects
and strings are allocated by a call to new_dlg_uac from
t_request_outside().

Is it the dispatcher module's job to shm_free the dialog memory, or does
tm free it on it's own?

 

<modules/dispatcher/dispatch.c>  (openser 1.3.2)

 

void ds_check_timer(unsigned int ticks, void* param)

{

            

...

            dlg_t * dialog;    

...

            

            /* Iterate over the groups and the entries of each group: */

            for(list = _ds_list; list!= NULL; list= list->next)

            {

                        for(j=0; j<list->nr; j++) 

                        {

                                    /* If the Flag of the entry has
"Probing set, send a probe:   */

                                    if
((list->dlist[j].flags&DS_PROBING_DST) > 0)

                                    {

                                                ...

 

                                                /* Execute the Dialog
using the "req_outside"-Method of the

                                                 * TM-Module.

                                                 * req_outside(str* m,
str* t, str* f, str* h, str* b,

                                                 *
dlg_t** d, transaction_cb c, void* cp); */

                                                if
(tmb.t_request_outside(&ds_ping_method,

 
&list->dlist[j].uri,

 
&ds_ping_from,

 
NULL,

 
NULL,

 
&dialog,

 
ds_options_callback,

 
(void*)(long)list->id) < 0) {

 
LM_ERR("unable to execute dialog\n");

                                                }

                                    }

                        }

            }

}

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20081217/0dd79f4e/attachment-0001.htm 


More information about the Users mailing list