1
0
Files
irix-657m-src/irix/lib/libirixpmda/tools/audit
2022-09-29 17:59:04 +03:00

59 lines
1.4 KiB
Bash
Executable File

#! /bin/sh
#
# Munge the memory audit output
# Build up a history of memory allocation and frees
# then sort the output, removing known "leaks" caused by PDUs
#
# $Id: audit,v 1.1 1997/12/12 04:24:09 chatz Exp $
#
nawk '
$1 != "audit:" { next }
$4 == "malloc" || $4 == "calloc" || $4 == "valloc" || $4 == "strdup" {
if ($5 in file) {
printf("Leak (%s): was %s %d bytes, now %s:%s %s %d bytes\n", $5, file[$5], size[$5], $2, $3, $4, $6);
delete file[$5];
delete size[$5];
}
file[$5] = $2 ":" $3;
size[$5] = $6;
}
$4 == "realloc" {
if ($5 != $6) {
if ($5 in file) {
delete file[$5];
delete size[$5];
}
else if ($5 != "0x0") {
printf("Realloc problem (%s): %s:%s reallocd unknown address %s for %s bytes\n", $6, $2, $3, $5, $7);
}
}
else if (!($5 in file)) {
printf("Realloc problem (%s): %s:%s reallocd unknown address %s for %s bytes\n", $6, $2, $3, $5, $7);
}
file[$6] = $2 ":" $3;
size[$6] = $7;
}
$4 == "free" {
if ($5 in file) {
delete file[$5];
delete size[$5];
}
else {
printf("Unallocated Free (%s): %s:%s\n", $5, $2, $3);
}
}
END {
total = 0;
for (i in file) {
printf("%s bytes at %s by %s\n", size[i], i, file[i]);
total += int(size[i]);
}
printf("Total memory still in use = %d bytes\n", total);
}' \
| sed \
-e "/irix\.c:189/d" \
-e "/indom\.c:429/d" \
| sort -n