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

Karol Golab karol at tls.pl
Mon Nov 28 23:13:23 MSK 2011


   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 <mailto:brian at freeswitch.org>>
>
>     Please post it to jira.freeswitch.org <http://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 <mailto: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
>     <mailto: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 
> <mailto:MSN%3Aanthony_minessale at hotmail.com>
> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com 
> <mailto:PAYPAL%3Aanthony.minessale at gmail.com>
> IRC: irc.freenode.net <http://irc.freenode.net> #freeswitch
>
> FreeSWITCH Developer Conference
> sip:888 at conference.freeswitch.org 
> <mailto:sip%3A888 at conference.freeswitch.org>
> googletalk:conf+888 at conference.freeswitch.org 
> <mailto:googletalk%3Aconf%2B888 at conference.freeswitch.org>
> pstn:+19193869900
>
>
> _________________________________________________________________________
> 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


   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ł


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20111128/ddb01fb8/attachment.html 


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