[FFmpeg-devel] MPADecodeContext on stack

Jason Garrett-Glaser darkshikari
Thu Jan 22 11:59:00 CET 2009


On Thu, Jan 22, 2009 at 2:55 AM, Marc Mason <mpeg.blue at free.fr> wrote:
> M?ns Rullg?rd wrote:
>
>> Here's a list of stack offenders on ARM:
>>
>> 6553600 encode_frame                   nellymoserenc.c:339
>>  262144 ff_mjpeg_decode_sos            mjpegdec.c:886
>>  105472 AC3_encode_frame               ac3enc.c:1147
>> ...
>>
>> Some of these include stack space used by inlined functions called
>> from those named.
>>
>> These are all the functions using more than 4k of stack space.
>
> Could you explain how you generated that list ?

Mans posted the script on #ffmpeg-devel on Freenode for me--here's his
modified version for x86_64:

objdump -d ffmpeg_g | perl -ne
's/\s*([[:xdigit:]]+):.*sub\s+\$0x([[:xdigit:]]+),%rsp/sprintf "$1
%d", hex $2/e and print' | sort -nr -k2 | while read addr size; do
f=$(addr2line -e ffmpeg_g -s -f ${addr%:}); printf '%7d %-30s %s\n'
$size $f; done

Replace "rsp" with "esp" for x86_32.

Note this *does not work on Windows* because all functions larger than
4K stack size will call __chkstk instead, and so it can't easily
detect the stack size.

Dark Shikari




More information about the ffmpeg-devel mailing list