[Freeswitch-users] Switch_curl
Chris Mandra
mandra at gmail.com
Wed Mar 16 12:00:22 MSK 2016
Thanks for responding Anthony. Can you tell me this:
Should curl calls be done in separate thread or is it ok to do them in
the main thread of modules?
On Tuesday, March 15, 2016, Chris Mandra <mandra at gmail.com> wrote:
>
> Should curl calls be done in separate thread or is it ok to do them in
> the main thread of modules?
> On Tuesday, March 15, 2016, Anthony Minessale <anthony.minessale at gmail.com
> <javascript:_e(%7B%7D,'cvml','anthony.minessale at gmail.com');>> wrote:
>
>> Curl is used in a few places and is not unstable. Study some of those
>> mods and maybe you can see how to use it in a typical situation. Probably
>> its related to memory management or lifecycle of objects you may be using.
>>
>> On Tuesday, March 15, 2016, Chris Mandra <mandra at gmail.com> wrote:
>>
>>> Hey guys, I'm working on a simple media bug module using FS 1.6. When a
>>> call comes in I'm calling switch_curl doing an http get.
>>>
>>> In switch_standard_app I use switch_curl and invoke
>>> switch_curl_easy_perform and exit after that.
>>>
>>> Calling switch_curl seems very unstable. It's crashing free switch most
>>> of the time. Are there any things I should be looking for related to this?
>>> I'm wondering if maybe this is a threading issue? Any ideas?
>>> I've included some backtraces
>>>
>>> Thanks, chris
>>>
>>>
>>> (gdb) bt
>>>
>>> #0 0x00007f8f00c59cc9 in __GI_raise (sig=sig at entry=6) at
>>> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>>
>>> #1 0x00007f8f00c5d0d8 in __GI_abort () at abort.c:89
>>>
>>> #2 0x00007f8f00c96394 in __libc_message (do_abort=do_abort at entry=1,
>>> fmt=fmt at entry=0x7f8f00da4b28 "*** Error in `%s': %s: 0x%s ***\n") at
>>> ../sysdeps/posix/libc_fatal.c:175
>>>
>>> #3 0x00007f8f00ca266e in malloc_printerr (ptr=<optimized out>,
>>> str=0x7f8f00da0c19 "free(): invalid pointer", action=1) at malloc.c:4996
>>>
>>> #4 _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at
>>> malloc.c:3840
>>>
>>> #5 0x00007f8f01334567 in switch_log_node_free (pnode=pnode at entry=0x7f8eb2b1f158)
>>> at src/switch_log.c:136
>>>
>>> #6 0x00007f8eeb192a24 in read_packet (listener=listener at entry=0x7f8ebc027898,
>>> event=event at entry=0x7f8eb2b1f7f0, timeout=timeout at entry=0) at
>>> mod_event_socket.c:1361
>>>
>>> #7 0x00007f8eeb1988a0 in listener_run (thread=<optimized out>,
>>> obj=0x7f8ebc027898) at mod_event_socket.c:2719
>>>
>>> #8 0x00007f8f01544430 in dummy_worker (opaque=0x7f8eb2be4868) at
>>> threadproc/unix/thread.c:151
>>>
>>> #9 0x00007f8f00ff0182 in start_thread (arg=0x7f8eb2b20700) at
>>> pthread_create.c:312
>>>
>>> #10 0x00007f8f00d1d47d in clone () at
>>> ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
>>>
>>>
>>> *[* <https://soniccloud.slack.com/archives/D02UEC39S/p1458078254000027>
>>>
>>> 5:44 <https://soniccloud.slack.com/archives/D02UEC39S/p1458078254000027>
>>>
>>> *]* <https://soniccloud.slack.com/archives/D02UEC39S/p1458078254000027>
>>>
>>> (gdb) bt full
>>>
>>> #0 0x00007f8f00c59cc9 in __GI_raise (sig=sig at entry=6) at
>>> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>>
>>> resultvar = 0
>>>
>>> pid = 18329
>>>
>>> selftid = 18421
>>>
>>> #1 0x00007f8f00c5d0d8 in __GI_abort () at abort.c:89
>>>
>>> save_stage = 2
>>>
>>> act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction =
>>> 0x0}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer
>>> = 0x0}
>>>
>>> sigs = {__val = {32, 0 <repeats 15 times>}}
>>>
>>> #2 0x00007f8f00c96394 in __libc_message (do_abort=do_abort at entry=1,
>>> fmt=fmt at entry=0x7f8f00da4b28 "*** Error in `%s': %s: 0x%s ***\n") at
>>> ../sysdeps/posix/libc_fatal.c:175
>>>
>>> ap = {{gp_offset = 40, fp_offset = 32654, overflow_arg_area =
>>> 0x7f8eb2b1f010, reg_save_area = 0x7f8eb2b1efa0}}
>>>
>>> fd = 2
>>>
>>> on_2 = <optimized out>
>>>
>>> list = <optimized out>
>>>
>>> nlist = <optimized out>
>>>
>>> cp = <optimized out>
>>>
>>> written = <optimized out>
>>>
>>> #3 0x00007f8f00ca266e in malloc_printerr (ptr=<optimized out>,
>>> str=0x7f8f00da0c19 "free(): invalid pointer", action=1) at malloc.c:4996
>>>
>>> buf = "00007f8ed0036700"
>>>
>>> cp = <optimized out>
>>>
>>> #4 _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at
>>> malloc.c:3840
>>>
>>> size = <optimized out>
>>>
>>> fb = <optimized out>
>>>
>>> nextchunk = <optimized out>
>>>
>>> nextsize = <optimized out>
>>>
>>> nextinuse = <optimized out>
>>>
>>> prevsize = <optimized out>
>>>
>>> bck = <optimized out>
>>>
>>> fwd = <optimized out>
>>>
>>> errstr = <optimized out>
>>>
>>> locked = <optimized out>
>>>
>>> #5 0x00007f8f01334567 in switch_log_node_free (pnode=pnode at entry=0x7f8eb2b1f158)
>>> at src/switch_log.c:136
>>>
>>> node = 0x7f8ed8012ab0
>>>
>>> #6 0x00007f8eeb192a24 in read_packet (listener=listener at entry=0x7f8ebc027898,
>>> event=event at entry=0x7f8eb2b1f7f0, timeout=timeout at entry=0) at
>>> mod_event_socket.c:1361
>>>
>>> dnode = 0x7f8ed8012ab0
>>>
>>> do_sleep = <optimized out>
>>>
>>> mlen = 0
>>>
>>> bytes = 0
>>>
>>> mbuf = 0x7f8ecc1ebfc0 ""
>>>
>>> buf = "Content-Type: log/data\nContent-Length: 88\nLog-Level:
>>> 7\nText-Channel: 3\nLog-File: param_hps_strategy.cpp\nLog-Func:
>>> retrieve\nLog-Line: 115\nUser-Data: \347@
>>> \247\a\n\n\000\n\n\000\065-418f-a6d1-9dc8f48e0cf9\n\n\000\000\071\n\n\000c8f48e0cf9"...
>>>
>>> len = 88
>>>
>>> status = SWITCH_STATUS_BREAK
>>>
>>> count = 0
>>>
>>> elapsed = <optimized out>
>>>
>>> start = 1457966137
>>>
>>> pop = 0x7f8ed8012ab0
>>>
>>> ptr = 0x7f8ecc1ebfc0 ""
>>>
>>> crcount = 0 '\000'
>>>
>>> buf_len = 2048
>>>
>>> channel = 0x0
>>>
>>> clen = 0
>>>
>>> __PRETTY_FUNCTION__ = "read_packet"
>>>
>>> __func__ = "read_packet"
>>>
>>> #7 0x00007f8eeb1988a0 in listener_run (thread=<optimized out>,
>>> obj=0x7f8ebc027898) at mod_event_socket.c:2719
>>>
>>> listener = 0x7f8ebc027898
>>>
>>> buf = '\000' <repeats 1023 times>
>>>
>>> len = 1024
>>>
>>> status = <optimized out>
>>>
>>> event = 0x0
>>>
>>> reply = "\000OK log level [7]", '\000' <repeats 493 times>
>>>
>>> session = 0x0
>>>
>>> channel = 0x0
>>>
>>> revent = 0x0
>>>
>>> var = <optimized out>
>>>
>>> locked = 1
>>>
>>> __PRETTY_FUNCTION__ = "listener_run"
>>>
>>> __func__ = "listener_run"
>>>
>>> #8 0x00007f8f01544430 in dummy_worker (opaque=0x7f8eb2be4868) at
>>> threadproc/unix/thread.c:151
>>>
>>> thread = 0x7f8eb2be4868
>>>
>>> #9 0x00007f8f00ff0182 in start_thread (arg=0x7f8eb2b20700) at
>>> pthread_create.c:312
>>>
>>> __res = <optimized out>
>>>
>>> pd = 0x7f8eb2b20700
>>>
>>> now = <optimized out>
>>>
>>> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140250860095232,
>>> -640791540281233069, 0, 0, 140250860095936, 140250860095232,
>>> 578173923610734931, 577994035108262227}, mask_was_saved = 0}}, priv = {pad
>>> = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
>>>
>>> not_first_call = <optimized out>
>>>
>>> pagesize_m1 = <optimized out>
>>>
>>> sp = <optimized out>
>>>
>>> freesize = <optimized out>
>>>
>>> __PRETTY_FUNCTION__ = "start_thread"
>>>
>>> #10 0x00007f8f00d1d47d in clone () at
>>> ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
>>>
>>> No locals
>>>
>>
>>
>> --
>> Anthony Minessale II ♬ @anthmfs ♬ @FreeSWITCH ♬
>>
>> ☞ http://freeswitch.org/ ☞ http://cluecon.com/ ☞
>> http://twitter.com/FreeSWITCH
>> ☞ irc.freenode.net #freeswitch ☞ *http://freeswitch.org/g+
>> <http://freeswitch.org/g+>*
>>
>> ClueCon Weekly Development Call
>> ☎ sip:888 at conference.freeswitch.org ☎ +19193869900
>>
>> https://www.youtube.com/watch?v=9XXgW34t40s
>> https://www.youtube.com/watch?v=NLaDpGQuZDA
>>
>>
>
> --
> mandra
> c:410.258.5281
>
--
mandra
c:410.258.5281
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20160316/783d03e8/attachment.html
Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users
mailing list