Added an awk script to check for leaks in the memory logging output we just added.
This commit is contained in:
parent
cdd37793c0
commit
33c67baa99
|
@ -0,0 +1,56 @@
|
|||
# 7 april 2015
|
||||
|
||||
$2 == "alloc" {
|
||||
if ($1 in A) {
|
||||
problem($1 " already allocated (" A[$1] "); allocated at " NR)
|
||||
next
|
||||
}
|
||||
A[$1] = type()
|
||||
next
|
||||
}
|
||||
|
||||
$2 == "realloc" {
|
||||
if (!($1 in A)) {
|
||||
problem($1 " not yet allocated; reallocated at " NR)
|
||||
next
|
||||
}
|
||||
if ($3 in A) {
|
||||
problem($3 " already allocated (" A[$3] "); reallocated at " NR)
|
||||
next
|
||||
}
|
||||
t = A[$1]
|
||||
delete A[$1]
|
||||
A[$3] = t
|
||||
next
|
||||
}
|
||||
|
||||
$2 == "free" {
|
||||
if (!($1 in A)) {
|
||||
problem($1 " not yet allocated; freed at " NR)
|
||||
next
|
||||
}
|
||||
delete A[$1]
|
||||
next
|
||||
}
|
||||
|
||||
{ problem("unrecognized line " $0 " at " NR) }
|
||||
|
||||
END {
|
||||
for (i in A)
|
||||
problem("leaked " A[i] " at " i)
|
||||
close("/dev/stderr")
|
||||
if (hasProblems)
|
||||
exit 1
|
||||
}
|
||||
|
||||
function problem(s) {
|
||||
print s > "/dev/stderr"
|
||||
hasProblems = 1
|
||||
}
|
||||
|
||||
function type( s, i) {
|
||||
s = $3
|
||||
for (i = 4; i <= NF; i++)
|
||||
s = s " " $i
|
||||
return s
|
||||
}
|
Loading…
Reference in New Issue