[ 
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

Répondre à