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.