Crash in coreaudio_dev on iphone

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tony,

Sorry for the late reply. I just fixed the crash in
interruptionListener after pjsua is restarted (ticket #1174). Thanks
for the report.

Best regards,
Ming

On Fri, Feb 4, 2011 at 8:38 PM, Tony Million <tony at bababoo.com> wrote:
> Ok thats fine, my only question would be how to signal to pj media that the audio should stop and restart when I get the begin / end interruption signal?
>
> Regards,
> --
> Tony Million
>
>
> On 4 Feb 2011, at 11:10, Ming wrote:
>
>> Hi Tony,
>>
>> Yes, that's right, you will overwrite coreaudio_dev's callback and
>> handle the interruption case at the application level.
>>
>> Regards,
>> Ming
>>
>> On Fri, Feb 4, 2011 at 6:03 PM, Tony Million <tony at bababoo.com> wrote:
>>> Hi Ming,
>>>
>>> I dont quite understand what you mean, wouldn't our AudioSession over-write the PJSIP one?
>>> Sorry to ask, but can you explain this a little better?
>>>
>>>
>>>
>>> What we do in our app is:
>>>
>>> main
>>> {
>>> ? ? ? ?register callback handler for reachbility
>>> }
>>>
>>> callback handler
>>> {
>>> ? ? ? ?(release resources if necessary)
>>> ? ? ? ?pjsua_destroy();
>>>
>>> ? ? ? ?if(connectable)
>>> ? ? ? ?{
>>> ? ? ? ? ? ? ? ?.. obviously all the setup here
>>> ? ? ? ? ? ? ? ?pjsua_init();
>>>
>>> ? ? ? ? ? ? ? ?(alloc resources)
>>> ? ? ? ? ? ? ? ?pjsua_start();
>>> ? ? ? ?}
>>> }
>>>
>>> The callback handler is called for any network state change (that is wifi->wifi, wifi->3g wifi->no signal (and the same for all 3G states too)). So in this way when pjsua starts up again it is bound to the correctly connected network interface. Unless there is a method of telling pjsua to rebind to the active network interface that I have missed, this is the only way I have found to handle network transitions.
>>>
>>>
>>>
>>> Also, as a footnote since we are talking about reachability , there is still a compatibility in os_darwinos.h when including <SystemConfiguration/SystemConfiguration.h> the following diff will fix it
>>>
>>> Index: pjlib/include/pj/compat/os_darwinos.h
>>> ===================================================================
>>> --- pjlib/include/pj/compat/os_darwinos.h ? ? ? (revision 3410)
>>> +++ pjlib/include/pj/compat/os_darwinos.h ? ? ? (working copy)
>>> @@ -95,7 +95,10 @@
>>> ?/*
>>> ?* Socket related
>>> ?*/
>>> -typedef int socklen_t;
>>> +#ifndef _SOCKLEN_T
>>> +#define _SOCKLEN_T
>>> +typedef ? ? ? ?__darwin_socklen_t ? ? ?socklen_t;
>>> +#endif
>>>
>>> ?/* Set 1 if native sockaddr_in has sin_len member.
>>> ?* Default: 0
>>>
>>>
>>>
>>>
>>> Regards,
>>> --
>>> Tony Million
>>> Chief Technology Officer - Bababoo Inc
>>> Web: http://www.bababoo.com/
>>> Tel: +44 20 7993 9152
>>> Twitter: @bababoo
>>>
>>> On 4 Feb 2011, at 09:09, Ming wrote:
>>>
>>>> Hi Tony,
>>>>
>>>> In the case that you need to restart pjsua, you will need to create
>>>> your own interruptionListener handler. You can do this by calling
>>>> AudioSessionInitialize() before coreaudio calls this function.
>>>>
>>>> Regards,
>>>> Ming
>>>>
>>>> On Thu, Feb 3, 2011 at 4:22 PM, Tony Million <tony at bababoo.com> wrote:
>>>>> I've investigated more, and found the following:
>>>>> When our app detects a change in network (i.e. changing from wifi to 3G or
>>>>> wifi->different wifi, or even losing signal entirely) we shutdown pjsip
>>>>> using pjsua_destroy() then, if/when a network is available we reinitialize
>>>>> pjsua using the same startup code we used in the first instance.
>>>>> When restarting pjsua I see the following error:
>>>>> ?08:13:52.942 sip_endpoint.c ?Module "mod-invite" registered
>>>>> ?08:13:52.942 coreaudio_dev. ? dev_id 0: iPhone IO device ?(in=1, out=1)
>>>>> 8000Hz
>>>>> ?08:13:52.942 coreaudio_dev. ?Error: cannot initialize audio session
>>>>> services (1768843636)
>>>>> ?08:13:52.943 coreaudio_dev. ?core audio initialized
>>>>> ?08:13:52.943 ? ? ? ? ?pjlib ?select() I/O Queue created (0x9dba14)
>>>>> ?08:13:52.979 sip_endpoint.c ?Module "mod-evsub" registered
>>>>>
>>>>> At this point, when I go to make a cellular call, I'll see the same crash I
>>>>> pasted (pasted again for completeness
>>>>> ?08:14:57.383 coreaudio_dev. ?Session interrupted! --- Begin Interruption
>>>>> ---
>>>>> Assertion failed: (mutex), function pj_mutex_lock, file
>>>>> ../src/pj/os_core_unix.c, line 1203.
>>>>> Program received signal: ??SIGABRT?.
>>>>> At
>>>>> As far as I know the only way to get pjsua to work correctly with the new
>>>>> network interface (be it the 3G WWAN or WIFI Network) is to call
>>>>> pjsua_destroy and then start up pjsua again. If this is incorrect I'm happy
>>>>> to change my code. If I do not shutdown/restart pjsua eventually I just
>>>>> start getting 502 (Timeout) responses from pjsua.
>>>>>
>>>>> Hope this helps,
>>>>> Tony
>>>>> On 3 Feb 2011, at 05:06, Ming wrote:
>>>>>
>>>>> Hi Tony,
>>>>>
>>>>> Thanks for the report. Is the crash always reproducible (i.e. does it
>>>>> happen every time you make a call)?
>>>>> Do you set up your own audio session interruptions in your
>>>>> application? Is there any log message from PJSIP on audio session
>>>>> initialization error (Error: cannot initialize audio session
>>>>> services...)?
>>>>>
>>>>> Regards,
>>>>> Ming
>>>>>
>>>>> On Thu, Feb 3, 2011 at 2:24 AM, Tony Million <tony at bababoo.com> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I've been seeing crashes related to audio session interruptions on the
>>>>>
>>>>> iphone for a while, and just got one while the app is connected to a
>>>>>
>>>>> debugger.
>>>>>
>>>>> I've attached the logs, I had made a call on cellular and just switched back
>>>>>
>>>>> to the PJSip based app.
>>>>>
>>>>> I have numerous crash logs showing the same thing but today is the first day
>>>>>
>>>>> I could catch it in the debugger. Don't know if this helps, I'm running
>>>>>
>>>>> current trunk.
>>>>>
>>>>> ?18:08:27.718 coreaudio_dev. ?Session interrupted! --- Begin Interruption
>>>>>
>>>>> ---
>>>>>
>>>>> Assertion failed: (mutex), function pj_mutex_lock, file
>>>>>
>>>>> ../src/pj/os_core_unix.c, line 1203.
>>>>>
>>>>> Program received signal: ??SIGABRT?.
>>>>>
>>>>> (gdb) bt
>>>>>
>>>>> #0 ?0x33bd52d4 in __kill ()
>>>>>
>>>>> #1 ?0x33bd52ca in kill ()
>>>>>
>>>>> #2 ?0x33bd52bc in raise ()
>>>>>
>>>>> #3 ?0x33be9d78 in abort ()
>>>>>
>>>>> #4 ?0x33bd7986 in __assert_rtn ()
>>>>>
>>>>> #5 ?0x00076258 in pj_mutex_lock ()
>>>>>
>>>>> #6 ?0x000aa114 in interruptionListener ()
>>>>>
>>>>> #7 ?0x31730772 in SSServer_AudioSessionDeferredListenerMessage ()
>>>>>
>>>>> #8 ?0x316ddf2e in _XAudioSessionDeferredListenerMessage ()
>>>>>
>>>>> #9 ?0x31677bea in mshMIGPerform ()
>>>>>
>>>>> #10 0x33a556fe in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
>>>>>
>>>>> ()
>>>>>
>>>>> #11 0x33a556c2 in __CFRunLoopDoSource1 ()
>>>>>
>>>>> #12 0x33a47f7c in __CFRunLoopRun ()
>>>>>
>>>>> #13 0x33a47c86 in CFRunLoopRunSpecific ()
>>>>>
>>>>> #14 0x33a47b8e in CFRunLoopRunInMode ()
>>>>>
>>>>> #15 0x33b0e4aa in GSEventRunModal ()
>>>>>
>>>>> #16 0x33b0e556 in GSEventRun ()
>>>>>
>>>>> #17 0x32099328 in -[UIApplication _run] ()
>>>>>
>>>>> #18 0x32096e92 in UIApplicationMain ()
>>>>>
>>>>> #19 0x00002cbc in main (argc=1, argv=0x2fdff67c) at
>>>>>
>>>>> /Users/tony/Projects/IOS/main.m:14
>>>>>
>>>>>
>>>>> Regards,
>>>>>
>>>>> --
>>>>>
>>>>> Tony Million
>>>>>
>>>>> _______________________________________________
>>>>>
>>>>> Visit our blog: http://blog.pjsip.org
>>>>>
>>>>> pjsip mailing list
>>>>>
>>>>> pjsip at lists.pjsip.org
>>>>>
>>>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Visit our blog: http://blog.pjsip.org
>>>>>
>>>>> pjsip mailing list
>>>>> pjsip at lists.pjsip.org
>>>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Visit our blog: http://blog.pjsip.org
>>>>>
>>>>> pjsip mailing list
>>>>> pjsip at lists.pjsip.org
>>>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Visit our blog: http://blog.pjsip.org
>>>>
>>>> pjsip mailing list
>>>> pjsip at lists.pjsip.org
>>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>
>>>
>>> _______________________________________________
>>> Visit our blog: http://blog.pjsip.org
>>>
>>> pjsip mailing list
>>> pjsip at lists.pjsip.org
>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux