Actually I can be a power user even though I really don't want to do it by myself in this case since openelec is really not a good debug environment.
But since the developer has no luck on reproducing, I have to give it a kick otherwise the thread may sink silently.
An valgrind log from an idle XBMC:
http://www.filedropper.com/xbmcidle
An valgrind log from XBMC playing back with the ASS subtitle I attached above:
http://www.filedropper.com/xbmcass
To get these logs I have to rebuild the openelec image with non-stripped binary and add the valgrind tool.
I only rebuild three of the component with non-stripped -- eglibc6, xbmc && libass.
Here are an example of leakage log.
Not sure if this is enough for develops to identify the leak.
Really have no idea what the inner stacks are referring to.
Isn't it libass?
==1286== 65,460,853 bytes in 1,412 blocks are possibly lost in loss record 4,308 of 4,308
==1286== at 0x4C29DA4: malloc (vg_replace_malloc.c:291)
==1286== by 0x7A19BCE:
==1286== by 0x7A0FDFD:
==1286== by 0x7A0FE46:
==1286== by 0x7A10674:
==1286== by 0x7A0AA12:
==1286== by 0x7A1A1BD:
==1286== by 0x89599A: CDVDSubtitlesLibass::RenderImage(int, int, double, int*) (DVDSubtitlesLibass.cpp:169)
==1286== by 0x8FF630: OVERLAY::CRenderer::Convert(CDVDOverlaySSA*, double) (OverlayRenderer.cpp:292)
==1286== by 0x8FF69C: OVERLAY::CRenderer::Convert(CDVDOverlay*, double) (OverlayRenderer.cpp:314)
==1286== by 0x9002C2: OVERLAY::CRenderer::Render(int) (OverlayRenderer.cpp:183)
==1286== by 0x8F62D5: CXBMCRenderManager::Render(bool, unsigned int, unsigned int) (RenderManager.cpp:774)
==1286==
==1286== LEAK SUMMARY:
==1286== definitely lost: 220,645 bytes in 1,258 blocks
==1286== indirectly lost: 763,353 bytes in 4,753 blocks
==1286== possibly lost: 245,662,210 bytes in 33,291 blocks
==1286== still reachable: 31,817,553 bytes in 99,624 blocks
==1286== suppressed: 0 bytes in 0 blocks