[ http://dev.sourcefabric.org/browse/LS-647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=30313#action_30313 ]
Torben Weibert edited comment on LS-647 at 1/15/13 4:45 PM: ------------------------------------------------------------ Here's an iTunes AAC file that fails. Please remove the attachment again after downloading it as it is copyrighted content. was (Author: torbenweibert): Here's a iTunes AAC file that fails. Please remove the attachment again after downloading it as it is copyrighted content. > Memory leak in AAC decoder > -------------------------- > > Key: LS-647 > URL: http://dev.sourcefabric.org/browse/LS-647 > Project: Liquidsoap > Issue Type: Bug > Components: Liquidsoap > Affects Versions: 1.0, 1.0.0+dev > Environment: Ubuntu 12.04 LTS > Reporter: Torben Weibert > Priority: Major > Attachments: test.m4a > > > We are currently evaluating Liquidsoap for an online radio streaming service. > Our music library is based on an iTunes library, and all files are in AAC > (iTunes m4a) format. > We found that after playing a few songs, liquidsoap will suddenly eat up > massive amounts of memory (usually around 2.5 GB) and eventually stop > playing. Apparently it always happens when liquidsoap switches to a new song. > Sometimes after the first song, sometimes only after an hour or so. The > process doesn't crash but just sits there and does nothing. > 1159 tw 20 0 7522m 2.6g 5800 S 2 68.5 0:14.96 liquidsoap > In the log file, I see a "catchup" message like this: > 2013/01/15 10:50:59 [test(dot)m4a:3] Prepared "test.m4a" (RID 0). > 2013/01/15 10:54:13 [clock.wallclock_main:2] We must catchup 2.35 seconds! > The problem can be reproduced with this simple one-liner: > output.dummy(mksafe(single("test.m4a"))) > This is on both the v1.0.0 included with Ubuntu 12.04 as well as the latest > dev version from hg. When I use MP3 files instead, everything works fine. So > the problem must be related to the AAC decoder. > I have subsequently tried to track down the source of the issue using > valgrind, and in fact, it reports a leaked block of > 2 GB size inside the > code of ocaml_faad: > ==28736== 2,214,429,630 bytes in 1 blocks are possibly lost in loss record > 223 of 223 > ==28736== at 0x4C2B6CD: malloc (in > /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > ==28736== by 0x6B066E: mp4ff_read_sample (mp4ff.c:427) > ==28736== by 0x6AF91C: ocaml_faad_mp4_decode (faad_stubs.c:550) > ==28736== by 0x6E8DD3: ??? (in /usr/local/bin/liquidsoap) > ==28736== by 0xA090: ??? > ==28736== by 0xA0F7D6F: ??? > ==28736== by 0xA0F80F7: ??? > ==28736== by 0x5B938B: camlDecoder__fill_1221 (in > /usr/local/bin/liquidsoap) > ==28736== by 0xD44FA9F: ??? > ==28736== by 0x5B92B3: camlDecoder__fill_1221 (in > /usr/local/bin/liquidsoap) > ==28736== by 0x960877F: ??? > ==28736== by 0xA0F7E4F: ??? > Line 427 of mp4ff.c is the malloc call inside mp4ff_read_sample: > int32_t mp4ff_read_sample(mp4ff_t *f, const int32_t track, const int32_t > sample, > uint8_t **audio_buffer, uint32_t *bytes) > { > int32_t result = 0; > *bytes = mp4ff_audio_frame_size(f, track, sample); > if (*bytes==0) return 0; > *audio_buffer = (uint8_t*)malloc(*bytes); // line 427 > ... > } > So I believe there must be something wrong about the return value of > mp4ff_audio_frame_size so that an insanely huge block of memory is allocated. > Also, there must be a condition that causes that block to not being freed > again. > I have looked at the code from faad_stubs.c where mp4ff_read_sample is > called, but I can't see any obvious mistakes. We would really appreciate any > help from the developers here. > Thank you > Torben -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://dev.sourcefabric.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------------------------------ Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS and more. Get SQL Server skills now (including 2012) with LearnDevNow - 200+ hours of step-by-step video tutorials by Microsoft MVPs and experts. SALE $99.99 this month only - learn more at: http://p.sf.net/sfu/learnmore_122512 _______________________________________________ Savonet-devl mailing list Savonet-devl@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/savonet-devl