[Freeswitch-users] Problems with mp3 larger than 70MB while playing files into the conference in the "perpetual-sound" variable

Leonardo P. Bidinoto leonardo.bidinoto at voicetechnology.com.br
Mon Feb 14 17:27:41 MSK 2011


Bug url = http://jira.freeswitch.org/browse/FS-3053

Hello guys, me again. Now with another bug that i found.
I set the "perpetual-sound" variable in the conference.conf.xml to play mp3
files that my customer chooses.
but when a mp3 with 71mb or more is played, it crashed the machine when was
more than one user listening to the mp3.
i tried a file with 99mb and crash too.
but when i use a file with 10mb or less, works fine.

i looked at the core file and see this:
===================================================================================================================================================================
FreeSWITCH Version 1.0.head (git-2401fec 2011-02-08 13-01-42 -0600)
---------------------------------------------------------------------------------
Core was generated by `/usr/local/freeswitch/bin/freeswitch -nc -core
-waste'.
Program terminated with signal 6, Aborted.
#0  0x002f6402 in __kernel_vsyscall ()
(gdb) bt
#0  0x002f6402 in __kernel_vsyscall ()
#1  0x003d9df0 in vfprintf () from /lib/libc.so.6
#2  0x003db701 in vfprintf () from /lib/libc.so.6
#3  0x0041228b in strcoll_l () from /lib/libc.so.6
#4  0x0041a5a5 in ____wcstold_l_internal () from /lib/libc.so.6
#5  0x0041a9e9 in ____wcstold_l_internal () from /lib/libc.so.6
#6  0x0033e675 in parse_new_id3 (fr=0xbc53390, first4bytes=<value optimized
out>) at id3.c:736
#7  0x0035a185 in read_frame (fr=0xbc53390) at parse.c:442
#8  0x0034f692 in get_next_frame (mh=0xbc53390) at libmpg123.c:495
#9  0x00350837 in mpg123_decode (mh=0xbc53390, inmemory=0x0, inmemsize=0,
outmemory=0xa1b21e0 "", outmemsize=16384, done=0x700d01f8) at
libmpg123.c:692
#10 0x003509a3 in mpg123_read (mh=0xbc53390, out=0xa1b21e0 "", size=16384,
done=0x700d01f8) at libmpg123.c:602
#11 0x00305f1b in decode_fd (handle=0xa28b210, data=0xa62b7e0,
len=0x700d0258) at
/usr/src/freeswitch/src/mod/formats/mod_shout/mod_shout.c:310
#12 shout_file_read (handle=0xa28b210, data=0xa62b7e0, len=0x700d0258) at
/usr/src/freeswitch/src/mod/formats/mod_shout/mod_shout.c:853
#13 0x00c89eba in switch_core_file_read (fh=0xa28b210, data=0xa289148,
len=0x700d3350) at src/switch_core_file.c:241
#14 0x001a42fc in conference_thread_run (thread=0x9ff50e0, obj=0x9ff4c30) at
/usr/src/freeswitch/src/mod/applications/mod_conference/mod_conference.c:1188
#15 0x00d27726 in dummy_worker (opaque=0x9ff50e0) at
threadproc/unix/thread.c:138
#16 0x00504832 in _L_unlock_3870 () from /lib/libpthread.so.0
#17 0x0050483d in _L_unlock_3870 () from /lib/libpthread.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) frame 6
#6  0x0033e675 in parse_new_id3 (fr=0xbc53390, first4bytes=<value optimized
out>) at id3.c:736
736                             free(tagdata);
(gdb) list
731                             {
732                                     if(NOQUIET) error("ID3v2: Duh, not
able to read ID3v2 tag data.");
733                                     ret = ret2;
734                             }
735     tagparse_cleanup:
736                             free(tagdata);
737                     }
738                     else
739                     {
740                             if(NOQUIET) error1("ID3v2: Arrg! Unable to
allocate %lu bytes for interpreting ID3v2 data - trying to skip instead.",
length);
(gdb) print tag data
No symbol "tag" in current context.
(gdb) print tagdata
$1 = <value optimized out>
(gdb) frame 13
#13 0x00c89eba in switch_core_file_read (fh=0xa28b210, data=0xa289148,
len=0x700d3350) at src/switch_core_file.c:241
241                                     if ((status =
fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) !=
SWITCH_STATUS_SUCCESS || !rlen) {
(gdb) list
236
237                     if (!switch_test_flag(fh, SWITCH_FILE_BUFFER_DONE))
{
238                             rlen = asis ? fh->pre_buffer_datalen :
fh->pre_buffer_datalen / 2;
239
240                             if (switch_buffer_inuse(fh->pre_buffer) <
rlen * 2) {
241                                     if ((status =
fh->file_interface->file_read(fh, fh->pre_buffer_data, &rlen)) !=
SWITCH_STATUS_SUCCESS || !rlen) {
242                                             switch_set_flag(fh,
SWITCH_FILE_BUFFER_DONE);
243                                     } else {
244                                             fh->samples_in += rlen;
245                                             if (fh->channels > 1) {
(gdb) print fh
$2 = (switch_file_handle_t *) 0xa28b210
(gdb) print *fh
$3 = {file_interface = 0xb212ed68, flags = 2057, fd = 0x0, samples = 0,
samplerate = 8000, native_rate = 8000, channels = 1 '\001', format = 0,
sections = 0, seekable = 1,
  sample_count = 0, speed = 0, memory_pool = 0xa28b150, prebuf = 0, interval
= 0, private_info = 0xa1b20c8, handler = 0x0, pos = 0, audio_buffer = 0x0,
sp_audio_buffer = 0x0, thresh = 0,
  silence_hits = 0, offset_pos = 0, samples_in = 0, samples_out = 0, vol =
0, resampler = 0x0, buffer = 0x0, dbuf = 0x0, dbuflen = 0, pre_buffer =
0xa624858,
  pre_buffer_data = 0xa62b7e0 "", pre_buffer_datalen = 65536, file =
0x1abf00
"/usr/src/freeswitch/src/mod/applications/mod_conference/mod_conference.c",
  func = 0x1acedb "conference_play_file", line = 2993, file_path = 0xa28b2d0
"/usr/local/freeswitch/sounds/flex/app186/en/conferencemusics/73036.mp3",
spool_path = 0x0, prefix = 0x0}
(gdb)
===================================================================================================================================================================
Someone have a ideia of whats happenning?

i'm providing the link to download the core file to analyses:
http://dl.dropbox.com/u/21117321/core.26585.gz

Thanks.

-- 
Leonardo Pires Bidinoto
Voice Technology
www.voicetechnology.com.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20110214/ea99c2c8/attachment-0001.html 


More information about the FreeSWITCH-users mailing list