mirror of
https://git.busybox.net/busybox
synced 2026-02-15 22:16:09 +00:00
function old new delta generate_stream_from_string 222 232 +10 setup_heredoc 329 330 +1 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/0 up/down: 11/0) Total: 11 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
39 lines
1.1 KiB
Bash
Executable file
39 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# hush's stderr with leak debug enabled
|
|
output=output
|
|
|
|
freelist=`grep 'free 0x' "$output" | cut -d' ' -f2 | sort | uniq | xargs`
|
|
|
|
grep -v free "$output" >"$output.leaked"
|
|
|
|
i=16
|
|
list=
|
|
for freed in $freelist; do
|
|
list="$list -e $freed"
|
|
test $((--i)) != 0 && continue
|
|
echo Dropping $list
|
|
grep -F -v $list <"$output.leaked" >"$output.temp"
|
|
mv "$output.temp" "$output.leaked"
|
|
i=16
|
|
list=
|
|
done
|
|
if test "$list"; then
|
|
echo Dropping $list
|
|
grep -F -v $list <"$output.leaked" >"$output.temp"
|
|
mv "$output.temp" "$output.leaked"
|
|
fi
|
|
|
|
# All remaining allocations are on addresses which were never freed.
|
|
# * Sort them by line, grouping together allocations which allocated the same address.
|
|
# A leaky allocation will give many different addresses (because it's never freed,
|
|
# the address can not be reused).
|
|
# * Remove the address (field #4).
|
|
# * Count the allocations per every unique source line and alloc type.
|
|
# * Show largest counts on top.
|
|
cat output.leaked \
|
|
| sort -u \
|
|
| cut -d' ' -f1-3 \
|
|
| uniq -c \
|
|
| sort -rn \
|
|
>output.leaked.counted_uniq_alloc_address
|