[Freeswitch-dev] Possible deadlock in src/switch_event.c ?

Anthony Minessale anthony.minessale at gmail.com
Mon Nov 28 23:26:25 MSK 2011


you can do whatever you wish.  I was just warning you that nobody has
really pushed event binding and unbinding in such a way before which may
explain how you uncovered that issue.  Usually things that bind stay
resident for a long time.


2011/11/28 Karol Golab <karol at tls.pl>

> **
>
>   Well, I have a Perl script run as part of a dialplan and the script
> creates an EventConsumer. Thus I have one bind / unbind pair for each
> connection. Is this somehow wrong / against what the EventConsumer API was
> planned for?
>   How could I have a single bind/unbind in this case?
>
>   As for choosing event socket and C application vs a script - what is the
> main difference / reason to switch: performance of some other issues? My
> CPU seems to have some cycles to spare.
>
>   Regards,
>   Karol
>
>
>
> On 11/28/2011 05:36 PM, Anthony Minessale wrote:
>
> you're probably right but I wonder what you are doing that is binding and
> unbinding so much?
> The bind and unbind was designed to be called once when the module is
> loaded and called again when it exits.
>
>  My fear is you are using the embedded scripting event handers in some
> quick repeating fashion.
>
>  I did a commit to flip that case around but I don't encourage you to use
> embedded scripts for heavy event traffic, that's what event socket is for
> and if you have the C skills to debug this, you might want to try a C app ;)
>
>
> 2011/11/28 Brian West <brian at freeswitch.org>
>
>> Please post it to jira.freeswitch.org
>>
>>  /b
>>
>>  On Nov 28, 2011, at 2:31 AM, Karol Golab wrote:
>>
>>
>>   Hi!
>>
>>   I've noticed some strange code in src/switch_event.c - could someone
>> smarter (& knowing the mentioned code) please take a look?
>>
>>   The problem is in the order of calls to locks BLOCK & RWLOCK - it
>> differs between functions:
>>
>> switch_event_bind_removable
>>         switch_mutex_lock(BLOCK);
>>         switch_thread_rwlock_wrlock(RWLOCK);
>>
>> switch_event_unbind_callback
>>     switch_thread_rwlock_wrlock(RWLOCK);
>>     switch_mutex_lock(BLOCK);
>>
>> switch_event_unbind
>>     switch_thread_rwlock_wrlock(RWLOCK);
>>     switch_mutex_lock(BLOCK);
>>
>>   As I understand this may lead to an outright deadlock between bind
>> and unbind.
>>
>>   I stumbled upon this code while debugging what seems like deadlocks
>> in our test FS installation put under some heavy load. The load is about
>> 25 new event subscribers per second (destroyed few seconds later) and
>> about 700 events per second.
>>
>>   Regards,
>>   Karol
>>
>>
>>
>> _________________________________________________________________________
>> Professional FreeSWITCH Consulting Services:
>> consulting at freeswitch.org
>> http://www.freeswitchsolutions.com
>>
>> 
>> 
>>
>> Official FreeSWITCH Sites
>> http://www.freeswitch.org
>> http://wiki.freeswitch.org
>> http://www.cluecon.com
>>
>> FreeSWITCH-dev mailing list
>> FreeSWITCH-dev at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
>> http://www.freeswitch.org
>>
>>
>
>
>  --
> Anthony Minessale II
>
> FreeSWITCH http://www.freeswitch.org/
> ClueCon http://www.cluecon.com/
> Twitter: http://twitter.com/FreeSWITCH_wire
>
> AIM: anthm
> MSN:anthony_minessale at hotmail.com
> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
> IRC: irc.freenode.net #freeswitch
>
> FreeSWITCH Developer Conference
> sip:888 at conference.freeswitch.org
> googletalk:conf+888 at conference.freeswitch.org
> pstn:+19193869900
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:consulting at freeswitch.orghttp://www.freeswitchsolutions.com
>
> FreeSWITCH-powered IP PBX: The CudaTel Communication Server
>
> Official FreeSWITCH Siteshttp://www.freeswitch.orghttp://wiki.freeswitch.orghttp://www.cluecon.com
>
> FreeSWITCH-dev mailing listFreeSWITCH-dev at lists.freeswitch.orghttp://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-devhttp://www.freeswitch.org
>
>
>
>   Karol
>
> --
>    e-mail: Karol.Golab at tls.pl
>       www: http://www.tls.pl
> signature: not found
>
>   company: TLS-Technologie Spółka z ograniczoną odpowiedzialnością z siedzibą w Warszawie przy ul. Polnej 50 00-644; KRS 0000073337 (XII Wydział Gospodarczy KRS); NIP 526-25-78-091; VAT ID PL5262578091; REGON 017349442; kap. zak. 50000,00 zł
>
>
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
>
> 
> 
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
>
>


-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_minessale at hotmail.com
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org
googletalk:conf+888 at conference.freeswitch.org
pstn:+19193869900
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20111128/e66b4d07/attachment-0001.html 


Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-dev mailing list