Hi Micheal,

 

We find below code in the switch_event.c. Is there a specific reason as to why are we setting the pointers eventp and event as NULL and not destroying the event?

 

static switch_status_t switch_event_queue_dispatch_event(switch_event_t **eventp)

{

 

                switch_event_t *event = *eventp;

 

                if (!SYSTEM_RUNNING) {

                                return SWITCH_STATUS_FALSE;

                }

 

                while (event) {

                                int launch = 0;

 

                                switch_mutex_lock(EVENT_QUEUE_MUTEX);

 

                                if (!PENDING && switch_queue_size(EVENT_DISPATCH_QUEUE) > (unsigned int)(DISPATCH_QUEUE_LEN * DISPATCH_THREAD_COUNT)) {

                                                if (SOFT_MAX_DISPATCH + 1 < MAX_DISPATCH) {

                                                                launch++;

                                                                PENDING++;

                                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "launch = %d & PENDING = %d\n", launch,PENDING);

                                                }

                                }

 

                                switch_mutex_unlock(EVENT_QUEUE_MUTEX);

 

                                if (launch) {

                                                if (SOFT_MAX_DISPATCH + 1 < MAX_DISPATCH) {

                                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Dispatching %d Thread\n", (SOFT_MAX_DISPATCH + 1));

                                                                switch_event_launch_dispatch_threads(SOFT_MAX_DISPATCH + 1);

                                                }

 

                                                switch_mutex_lock(EVENT_QUEUE_MUTEX);

                                                PENDING--;

                                                switch_mutex_unlock(EVENT_QUEUE_MUTEX);

                                }

 

                                *eventp = NULL;

                                switch_queue_push(EVENT_DISPATCH_QUEUE, event);

                                event = NULL;

 

                }

 

                return SWITCH_STATUS_SUCCESS;

}

 

Thanks

Darshan

 

From: FreeSWITCH-users [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Michael Jerris
Sent: Tuesday, June 19, 2018 2:34 AM
To: FreeSWITCH Users Help <freeswitch-users@lists.freeswitch.org>
Subject: Re: [Freeswitch-users] Memory leak while using BGAPI

 

If that event is being consumed by something that is blocking maybe?  Is it always that number or if you do many more does it get bigger?  This could just be an event that isnt consumed yet when you shut down and not a big problem.

 



On Jun 18, 2018, at 2:17 AM, Mody, Darshan (Darshan) <darshanmody@avaya.com> wrote:

 

Hi,

 

We are observing considerable memory leak while using LUA and BGAPI of mod_command.c. Below is the valgrind’s output

 

==21863== 123,170 (45,496 direct, 77,674 indirect) bytes in 517 blocks are definitely lost in loss record 2,370 of 2,398

==21863==    at 0x4C29C23: malloc (vg_replace_malloc.c:299)

==21863==    by 0x548707C: switch_event_create_subclass_detailed (switch_event.c:736)

==21863==    by 0x11631389: bgapi_exec (mod_commands.c:5151)

==21863==    by 0x56EEE8F: dummy_worker (thread.c:151)

==21863==    by 0x7677E24: start_thread (in /usr/lib64/libpthread-2.17.so)

==21863==    by 0x805734C: clone (in /usr/lib64/libc-2.17.so

 

==21863== 143,478 (18,392 direct, 125,086 indirect) bytes in 209 blocks are definitely lost in loss record 2,374 of 2,398

==21863==    at 0x4C29C23: malloc (vg_replace_malloc.c:299)

==21863==    by 0x548707C: switch_event_create_subclass_detailed (switch_event.c:736)

==21863==    by 0x542AADE: switch_core_session_exec (switch_core_session.c:2874)

==21863==    by 0x542B108: switch_core_session_execute_application_get_flags (switch_core_session.c:2742)

==21863==    by 0x5510C10: CoreSession::execute(char const*, char const*) (switch_cpp.cpp:777)

==21863==    by 0x16FED72C: ??? (mod_lua_wrap.cpp:7289)

==21863==    by 0x17217323: ??? (in /usr/lib64/liblua-5.1.so)

==21863==    by 0x17221E56: ??? (in /usr/lib64/liblua-5.1.so)

==21863==    by 0x1721774C: ??? (in /usr/lib64/liblua-5.1.so)

==21863==    by 0x17216A6D: ??? (in /usr/lib64/liblua-5.1.so)

==21863==    by 0x172178D9: ??? (in /usr/lib64/liblua-5.1.so)

==21863==    by 0x1721344C: lua_pcall (in /usr/lib64/liblua-5.1.so)

 

Has some one also observed behavior while using BGAPI?

 

Thanks

Darshan 

 

 

_________________________________________________________________________
Professional FreeSWITCH Services
sales@freeswitch.com
https://freeswitch.com

Official FreeSWITCH Sites
https://freeswitch.com/oss
https://freeswitch.org/confluence
https://cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:
http://lists.freeswitch.org/mailman/options/freeswitch-users
https://freeswitch.com