Crash in coreaudio_dev on iphone

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

 



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




[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