linphone-developers
[Top][All Lists]
Advanced

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

Re: [Linphone-developers] Bug: Linphone-3 crashes when using bluetootht


From: Aymeric Moizard
Subject: Re: [Linphone-developers] Bug: Linphone-3 crashes when using bluetootht as audio device
Date: Wed, 15 Oct 2008 18:56:53 +0200 (CEST)


I have looked into the problem. In fact, pasnd.c does not seem to be able
to use a specific audio device: it can only use the default audio device.

The "pasnd_detect" method is just counting the device, get it's name
and make as if it was a record/play device no matter its real capabilities.

Thus, pasnd code is always trying to load
 "outputParameters.device = pa_hai->defaultOutputDevice"

That doesn't explain why it's crashing but would probably explain why you cannot choose a different sound card.

I have tested again the test application ./tests/echo
It didn't crashed for me.

tks,
Aymeric MOIZARD / ANTISIP
amsip - http://www.antisip.com
osip2 - http://www.osip.org
eXosip2 - http://savannah.nongnu.org/projects/exosip/


On Mon, 13 Oct 2008, Xuân Baldauf wrote:

Aymeric Moizard wrote:


On Mon, 13 Oct 2008, Xuân Baldauf wrote:

Hello,

Hi,

I'd like to use linphone as softphone using a normal bluetooth headset.
However, linphone crashes when I attempt to do that.


   How to reproduce

  1. Start linphone-3 (compiled form linphone-3.0.0).
  2. Go to View/Preferences/Multimedia Settings
  3. Change "Ring device" to "PASND: bluetooth"
  4. Press the Ring sound "Play" button.


     Expected result

Linphone plays some sound.


     Actual result

Linphone crashes.

I've repeated this using gdb and I get follow stack trace:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb64a26c0 (LWP 25540)]
pasnd_open (device=0x8290580, devnumber=<value optimized out>, bits=16,
stereo=1, rate=44100, minsz=0xbf9425e0) at pasnd.c:155
155         outputParameters.suggestedLatency = Pa_GetDeviceInfo(
outputParameters.device )->defaultLowOutputLatency;

The stereo mode is not supported by this module. I think you have
to replace oldphone.wav with a non stereo file.

Also, if it still crash with a mono file, can you try to provide other
information? When you reach the backtrace below, do some "print"
 print "outputParameters"
 print "outputParameters.device"

can you also modify the code so that we know if Pa_GetDeviceInfo is
returning a NULL result? which might be the case here...

I've tried to use PASND and a normal PCI sound device and I did a normal
call (which should yield a mono sound interaction with the sound
device). This is the result:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb642a6c0 (LWP 727)]
pasnd_open (device=0x823a360, devnumber=<value optimized out>, bits=16,
stereo=0, rate=8000, minsz=0xbfec9800) at pasnd.c:155
155         outputParameters.suggestedLatency = Pa_GetDeviceInfo(
outputParameters.device )->defaultLowOutputLatency;
(gdb) bt
#0  pasnd_open (device=0x823a360, devnumber=<value optimized out>,
bits=16, stereo=0, rate=8000, minsz=0xbfec9800) at pasnd.c:155
#1  0xb7f4bfe4 in pasnd_read_preprocess (f=0x8368598) at pasnd.c:441
#2  0xb7f40878 in ms_filter_preprocess (f=0x81e7cd4, t=0x84244b8) at
msfilter.c:208
#3  0xb7f41fa2 in ms_ticker_attach (ticker=0x84244b8, f=0x8368598) at
msticker.c:130
#4  0xb7f48279 in audio_stream_start_full (stream=0x83cffd0,
profile=0x8203550, remip=0x83d6024 "82.98.69.133", remport=9134,
rem_rtcp_port=9135, payload=8, jitt_comp=60, infile=0x0, outfile=0x0,
playcard=0x8201348, captcard=0x8201348, use_ec=0 '\0')
   at audiostream.c:268
#5  0xb7f4843d in audio_stream_start_now (stream=0x83cffd0,
prof=0x8203550, remip=0x83d6024 "82.98.69.133", remport=9134,
rem_rtcp_port=9135, payload_type=8, jitt_comp=60, playcard=0x8201348,
captcard=0x8201348, use_ec=<value optimized out>) at audiostream.c:348
#6  0xb7f246d3 in linphone_core_start_media_streams (lc=0x81e6cf8,
call=0x83d6000) at linphonecore.c:1379
#7  0xb7f257e3 in linphone_call_ringing (lc=0x81e6cf8, ev=0xb3e06b70) at
exevents.c:832
#8  0xb7f27200 in linphone_core_process_event (lc=0x81e6cf8,
ev=0xb3e06b70) at exevents.c:1001
#9  0xb7f23cac in linphone_core_iterate (lc=0x81e6cf8) at linphonecore.c:994
#10 0x0804f641 in linphone_gtk_iterate (lc=0x81e6cf8) at main.c:247
#11 0xb77d3a06 in ?? () from /usr/lib/libglib-2.0.so.0
#12 0xb77d32d9 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#13 0xb77d685b in ?? () from /usr/lib/libglib-2.0.so.0
#14 0xb77d6d2a in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#15 0xb7cb6279 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#16 0x08050d57 in main (argc=0, argv=0x60205002) at main.c:737
(gdb) info registers
*eax            0x0      0*
ecx            0x1      1
edx            0x81e7cd4        136215764
ebx            0xb7f5eff4       -1208619020
esp            0xbfec9740       0xbfec9740
ebp            0xbfec97d8       0xbfec97d8
esi            0x823a360        136553312
edi            0x823a360        136553312
*eip            0xb7f4bc1c       0xb7f4bc1c <pasnd_open+140>*
eflags         0x210246 [ PF ZF IF RF ID ]
cs             0x73     115
ss             0x7b     123
ds             0x7b     123
es             0x7b     123
fs             0x0      0
gs             0x33     51
(gdb) disas
Dump of assembler code for function pasnd_open:
[...]
0xb7f4bc0d <pasnd_open+125>:    mov    %eax,(%esp)
0xb7f4bc10 <pasnd_open+128>:    call   0xb7f3e8e0 <address@hidden>
0xb7f4bc15 <pasnd_open+133>:    movl   $0x0,-0x1c(%ebp)
*0xb7f4bc1c <pasnd_open+140>:    fldl   0x1c(%eax)*
0xb7f4bc1f <pasnd_open+143>:    mov    $0x10624dd3,%eax
0xb7f4bc24 <pasnd_open+148>:    imull  0x10(%ebp)

So, it looks very likely that Pa_GetDeviceInfo() returns null.

tks
Aymeric
ciao,
Xuân.


(gdb) bt
#0  pasnd_open (device=0x8290580, devnumber=<value optimized out>,
bits=16, stereo=1, rate=44100, minsz=0xbf9425e0) at pasnd.c:155
#1  0xb7fc3f74 in pasnd_write_preprocess (f=0x8489bc0) at pasnd.c:459
#2  0xb7fb8878 in ms_filter_preprocess (f=0x81e7c04, t=0x83bfaa0) at
msfilter.c:208
#3  0xb7fb9fa2 in ms_ticker_attach (ticker=0x83bfaa0, f=0x8394490) at
msticker.c:130
#4  0xb7fbfb21 in ring_start_with_cb (file=0x8202a88
"/usr/local/share/sounds/linphone/rings/oldphone.wav", interval=2000,
sndcard=0x81f08b0, func=0xb7f97f80 <notify_end_of_ring>,
user_data=0x81e6bf8) at audiostream.c:407
#5  0xb7f99614 in linphone_core_preview_ring (lc=0x81e6bf8,
ring=0x8202a88 "/usr/local/share/sounds/linphone/rings/oldphone.wav",
func=0x8050e20 <linphone_gtk_end_of_ring>, userdata=0x83c4d50) at
linphonecore.c:1761
#6  0x0805296b in linphone_gtk_play_ring_file (w=0x83c4d50) at
propertybox.c:167
#7  0xb78e72a4 in g_cclosure_marshal_VOID__VOID () from
/usr/lib/libgobject-2.0.so.0
#8  0xb78d9c3b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0

I hope that helps. :-)

ciao,
Xuân.

P.S.: It appears that all "pasnd" sound devices show the same behaviour.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]